Obtaining AuthorizationOAuth 2.0에서 권한을 얻는 다양한 방법Authorization Code GrantAuthorization Requestresponse_type="code"client_idredirect_uriscopestateAuthorization ResponsecodestateAccess Token Requestgrant_type="authorization_code"coderedirect_uriclient_idAccess Token Responseaccess_tokenexpires_intoken_typerefresh_token (optional)Implicit GrantJavaScript 같은 scripting language applicationredirection-..
Protocol EndpointsAuthorization server endpointsAuthorization endpointclient가 user-agent rediraction을 통해 resource owner로부터 권한을 얻는 데 사용Token endpointclient가 client authentication을 통해 authorization code를 access token으로 교환하는 데 사용Client endpointRedirection endpointauthorization server가 resource owner의 user-agent를 통해 client로 authorization credentials를 포함한 응답을 반환하는 데 사용Authorization Endpointresource o..
Client Registration클라이언트 등록 방식은 사양 밖클라이언트 등록 시 client와 authorization server 간의 직접적인 상호작용은 필요하지 않는다.클라이언트는 client type과 redirection URI를 지정해야 하고, authorization server는 애플리케이션 이름, 웹 사이트, 설명, 로고 이미지, 약관 등 추가적인 정보를 요구할 수 있다.Client Typesclient credentials의 기밀성을 유지할 수 있는지 여부에 따라 두 가지 클라이언트 유형이 있다.confidentiale.g. native application or web browser-based applicationpublice.g. web application on serverCl..
Introduction전통적인 client-server authentication model에서 third-party 애플리케이션이 restricted resource (protected resource)에 접근하기 위해서는 resource owner의 credentials를 알아야만 했다.이는 third-party 애플리케이션이 resource owner의 password를 저장하거나, 접근할 수 있는 resource의 scope을 제한할 수 없는 등 보안적으로 취약하다.OAuth는 authorization layer를 도입하고, 클라이언트의 역할을 resource owner의 역할과 분리하여 이러한 문제를 해결한다.클라이언트는 resource owner의 승인 하에 resource owner의 cre..
7년째 계정 서버 개발자로 있으면서, OAuth 2.0 스펙을 제대로 정독한 적 없는 듯 하다. (바쁜 현업에 치여서라고 변명해 본다.)물론 보편적인 내용은 현업 하면서 자연스럽게 알게 되기도 하지만, 왜 이런 설계가 나왔는지, 스펙에서 주로 쓰는 용어는 무엇인지, 문장과 문장 사이에 숨겨진 의도까지 파악하기 위해서는 스펙을 정독해야 한다.이에 Authorization의 가장 중요한 스펙 중 하나인 RFC 6749 The OAuth 2.0 Authorization Framework를 시간을 내 정리 해 보고자 한다. (OIDC, SAML, SCIM도...)https://datatracker.ietf.org/doc/html/rfc6749 RFC 6749: The OAuth 2.0 Authorization ..
12.1 Reactor에서의 디버깅 방법 비동기, 선언형 프로그래밍 방식의 Reactor는 디버깅이 쉽지 않음 12.1.1 Debug Mode를 사용한 디버깅 Hooks.onOperatorDebug()를 통해 디버그 모드 활성화 (Example12_1) 체인상에서 에러가 시작된 지점부터 에러 전파 상태를 표시 비용이 많이 드는 동작 스택트레이스 캡처 에러가 발생한 Assembly의 스택트레이스를 원본 스택트레이스 중간에 끼워 넣음 운영 환경에서는 reactor.tools.agent.ReactorDebugAgent 이용 IntelliJ에서는 [Enable Reactor Debug mode]에서 Hooks.onOperatorDebug() 또는 ReactorDebugAgent.init() 중 택1 하여 활성화..
11.1 Context란? 어떠한 상황에서 그 상황을 처리하기 위해 필요한 정보 Reactor에서 Context의 정의Operator 같은 Reactor 구성요소 간에 전파되는 key/value 형태의 저장소 전파 : Downstream에서 Upstream 체인상의 각 Operator가 해당 Context 정보를 동일하게 이용할 수 있음 Reactor의 Context는 Subscriber와 매핑됨 cf. ThreadLocal의 경우 실행 스레드와 매핑됨 즉, 구독이 발생할 때마다 해당 구독과 연결된 하나의 Context가 생김 public static void main(String[] args) throws InterruptedException { Mono .deferContextual(ctx -> Mo..
Reactor Sequence에서 사용되는 스레드를 관리해 주는 역할 10.1 스레드(Thread)의 개념 이해 물리적인 스레드(Pysical Thread) : CPU 코어를 논리적으로 나눈 것 듀얼코어 4 스레드 (작업관리자 [성능]에서 확인 가능) 논리적인 스레드(Logical Thread) : 프로세스 내에서 실행되는 세부 작업의 단위 이론적으로는 제한이 없지만 실제로는 물리적인 스레드의 가용 범위내에서 생성 가능 병렬성(Parallelism) : 물리적인 스레드가 실제로 동시에 실행됨 동시성(Concurrency) : 동시에 실행되는 것처럼 보이지만 실제로는 아님 무수히 많은 논리적인 스레드가 물리적인 스레드를 아주 빠른 속도로 번갈아 가면서 사용 10.2 Scheduler란? 어떤 스레드에서 무..
- Total
- Today
- Yesterday