728x90
ClientRegistration

- OAuth 2.0 또는 OpenID Connect 1.0 Provider 에서 클라이언트의 등록 정보를 나타낸다
- ClientRegistration 은 OpenID Connect Provider의 설정 엔드포인트나 인가 서버의 메타데이터 엔드포인트를 찾아 초기화할 수 있다.
- ClientRegistrations의 메소드를 사용하면 아래 예제처럼 편리하게 ClientRegistration 을 설정할 수 있다
- ClientRegistration clientRegistration = ClientRegistrations.fromIssuerLocation(“https://idp.example.com/issuer”).build();
- 위 코드는 200 응답을 받을 때까지 https://idp.example.com/issuer/.well-known/openid-configuration, https://idp.example.com/.well-known/oauth-authorization-server 에 차례대로 질의해본다
ClientRegistration 자세히 살펴 보기

- registrationId : ClientRegistration을 식별할 수 있는 유니크한 ID.
- clientId : 클라이언트 식별자.
- clientSecret : 클라이언트 secret.
- clientAuthenticationMethod : provider에서 클라이언트를 인증할 때 사용할 메소드로서 basic, post, none (public 클라이언트) 을 지원한다.
- authorizationGrantType : OAuth 2.0 인가 프레임워크는 네 가지 권한 부여 타입을 정의하고 있으며 지원하는 값은 authorization_code, implicit, client_credentials, password다.
-
redirectUriTemplate : 클라이언트에 등록한 리다이렉트 URL로, 사용자의 인증으로 클라이언트에 접근 권한을 부여하고 나면, 인가 서버가 이 URL로 최종 사용자의 브라우저를 리다이렉트시킨다.
-
Scopes : 인가 요청 플로우에서 클라이언트가 요청한 openid, 이메일, 프로필 등의 scope.
-
clientName : 클라이언트를 나타내는 이름으로 자동 생성되는 로그인 페이지에서 노출하는 등에 사용한다.
-
authorizationUri : 인가 서버의 인가 엔드포인트 URI.
-
tokenUri : 인가 서버의 토큰 엔드포인트 URI.
-
jwkSetUri : 인가 서버에서 JSON 웹 키 (JWK) 셋을 가져올 때 사용할 URI. 이 키 셋엔 ID 토큰의 JSON Web Signature (JWS) 를 검증할 때 사용할 암호키가 있으며, UserInfo 응답을 검증할 때도 사용할 수 있다.
-
configurationMetadata : OpenID Provider 설정 정보로서 application.properties 에 spring.security.oauth2.client.provider.[providerId].issuerUri를 설정했을 때만 사용할 수 있다.
-
(userInfoEndpoint)uri : 인증된 최종 사용자의 클레임/속성에 접근할 때 사용하는 UserInfo 엔드포인트 URI
-
(userInfoEndpoint)authenticationMethod : UserInfo 엔드포인트로 액세스 토큰을 전송할 때 사용할 인증 메소드. header, form, query 를 지원한다.
-
userNameAttributeName : UserInfo 응답에 있는 속성 이름으로, 최종 사용자의 이름이나 식별자에 접근할 때 사용한다
CommonOAuth2Provider

- OAuth 2.0 공급자 정보를 제공하는 클래스로서 글로벌 서비스 제공자 일부는 기본으로 제공되어진다
- Client ID 와 Client Secret 는 별도로 application.properties 에 작성해야 한다. -> 사용자마다 다르기 때문
- Naver 나 Kakao 와 같은 국내 공급자 정보는 위의 모든 항목을 수동으로 작성해서 사용해야 한다
- 클라이언트 기준인 Registration 항목과 서비스 제공자 기준인 Provider 항목으로 구분하여 설정한다
- application.properties 가 아닌 Java Config 방식으로 ClientRegistration 등록을 설정 할 수 있다
- ClientRegistration 객체를 생성할 수 있는 빌더 클래스를 반환한다
ClientRegistration 동작 과정

- fromIssuerLocation을 통해 인증 서버에서 user값을 가지고 온다.
- OIDC 방식 : /.well-known/openid-configuration 에서 값을 가지고 온다.
- AUTH 방식 : /.well-known/oauth-authorization-server 에서 값을 가지고 온다.
- 둘중 하나의 방식을 선택해서 값을 가지고 오기만 하면 된다.
- 얻어온 값을 기반으로 ClientRegistration 객체로 변경하여 사용한다.
- 만약 application.yml에 읽어온 값과 같은 값이 있다면 우선순위는 application.yml에 작성한 값이 높기 떄문에 읽어온 값을 버리게 된다.
728x90
'스프링 시큐리티 OAuth2 > OAuth 2.0 Client Fundamentals' 카테고리의 다른 글
| 자동설정에 의한 초기화 과정 이해 (0) | 2023.01.15 |
|---|---|
| ClientRegistrationRepository 이해 및 활용 (0) | 2023.01.15 |
| 클라이언트 앱 시작하기 - application.yml/ OAuth2ClientProperties (0) | 2023.01.14 |