728x90
클라이언트 권한 부여 요청 시작

- 클라이언트가 인가서버로 권한 부여 요청을 하거나 토큰 요청을 할 경우 클라이언트 정보 및 엔드포인트 정보를 참조해서 전달한다
- application.yml 환경설정 파일에 클라이언트 설정과 인가서버 엔드포인트 설정을 한다
- 초기화가 진행되면 application.yml 에 있는 클라이언트 및 엔드포인트 정보가 OAuth2 ClientProperties의 각 속성에 바인딩된다
- OAuth2 ClientProperties에 바인딩되어 있는 속성의 값은 인가서버로 권한부여 요청을 하기 위한 ClientRegistration 클래스의 필드에 저장된다
- OAuth2 Client는 ClientRegistration를 참조해서 권한부여 요청을 위한 매개변수를 구성하고 인가서버와 통신한다
application.yml

- registration : 클라이언트 설정
- authorization-grant-type : OAuth 2.0 권한 부여 타입(authorization code, password.. 등 여러 가지 방식이 있다)
- client-id : 서비스 공급자에 등록된 클라이언트 아이디
- client-name: 클라이언트 이름
- client-secret: 서비스 공급자에 등록된 클라이언트 비밀번호
- redirect-uri: 일종의 콜백, 인가서버에서 권한 코드 부여 후 클라이언트로 리다이렉트 하는 위치
- clientAuthenticationMethod: 클라이언트 자격증명 전송방식 (client -> 인가서버로 전송하는 방식을 의미한다)
- scope: 리소스에 접근 제한 범위, 인가서버에 스코프가 정의가 되어 있어야 하며 client 서버에 토큰을 전달해 줄 때, scope를 포함시켜 전달한다.
- provider : 공급자 설정
- authorization-uri : OAuth2.0 권한 코드 부여 엔드 포인트(코드 요청 엔드포이트)
- issuer-uri : 서비스 공급자 위치
- jwk-set-uri: OAuth2.0 JwkSetUri 엔드 포인트
- token-uri: OAuth2.0 토큰 엔드 포인트
- user-info-uri: OAuth2.0 UserInfo 엔드포인트
- user-name-attribute: OAuth2.0 사용자명을 추출하는 클레임명
OAuth2 ClientProperties(prefix="spring.security.oauth2.client)

- Registration 은 인가 서버에 등록된 클라이언트 및 요청 파라미터 정보를 나타낸다
- Provider는 공급자에서 제공하는 엔드포인트 등의 정보를 나타낸다
- 클라이언트 및 공급자의 정보를 registration / provider 맵에 저장하고 인가서버와의 통신 시 각 항목을 참조하여 사용한다
- 네이버, 구글, 페이스북 등등 다양한 인증 서버 properties 값을 각각의 Registation, Provider에 저장하여 사용하면 된다.
TEST
application.yml 작성(keycloak에서 설정한 client, user 기반으로 입력)
server:
port: 8081
spring:
security:
oauth2:
client:
registration:
keycloak:
client-id: oauth2-client-app
client-secret: xSlqD456gfAeLZO93BLbTwQys0NEc8KL
client-name: oauth2-client-app
redirect-uri: http://localhost:8081/login/oauth2/code/keycloak #콜백 주소, spring security filter가 해당 uri를 받는게 정의되어 있다.
authorization-grant-type: authorization_code
client-authentication-method: client_secret_basic #post, none 등이 더 있다
scope:
- openid
- profile
- email
provider:
keycloak:
authorization-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/auth
token-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/token
issuer-uri: http://localhost:8080/realms/oauth2
user-info-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo
jwk-set-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/certs
user-name-attribute: preferred_username #사용자 정보를 가지고 올 키(keykloak은 이값으로 되어있다)
인증서버에 valid URI에 redirectUri 추가

- keycloak 인증 서버에서 redirectURI를 추가해 주어야 한다.
728x90
'스프링 시큐리티 OAuth2 > OAuth 2.0 Client Fundamentals' 카테고리의 다른 글
| 자동설정에 의한 초기화 과정 이해 (0) | 2023.01.15 |
|---|---|
| ClientRegistrationRepository 이해 및 활용 (0) | 2023.01.15 |
| ClientRegistration 이해 및 활용 (0) | 2023.01.15 |