1. client_id
- 인가서버에 등록된 클라이언트에 대해 생성된 고유 키
2. client_secret
- 인가서버에 등록된 특정 클라이언트의 client_id 에 대해 생성된 비밀 값
3. response_type
- 애플리케이션이 권한 부여 코드 흐름을 시작하고 있음을 인증 서버에 알려준다
- code, password, client_credentials, refresh_token, token, id_token 이 있으며 token, id_token 은 implicit 권한부여유형에서 지원해야 한다
- 서버가 쿼리 문자열에 인증 코드(code), 토큰(token, id_token) 등을 반환
| 권한 부여 타입 | Response Type | 비고 |
| Authorization Code Grant PKCE-enhanced Authorization Grant |
code | |
| implicit Grant | token | |
| password Credentials Grant | password | |
| Client Credentials Grant | client_credentials | |
| Refresh Token Grant | refresh_token | |
| password Credentials Grant(OIDC) | password | scope 에 openid 를 포함 |
| implicit Grant(OIDC) | id_token(code_token) | scope 에 openid 를 포함 |
4. redirect_uri
- 사용자가 응용 프로그램을 성공적으로 승인하면 권한 부여 서버가 사용자를 다시 응용 프로그램으로 리디렉션한다.
- redirect_uri 가 초기 권한 부여 요청에 포함된 경우 서비스는 토큰 요청에서도 이를 요구해야 한다.
- 토큰 요청의 redirect_url 는 인증 코드를 생성할 때 사용된 redirect_url 와 정확히 일치해야 한다.
그렇지 않으면 서비스는 요청을 거부해야 한다.
Authorization Code Grant, PKCE-enhanced Authorization Grant, implicit Grant 의 경우 인가서버의 로그인 플로우를 타기 때문에 인가서버에서 로그인이 성공, 실패했을때 결과를 보내줘야할 redirectUri가 반드시 필요하다. 그리고 인가서버에 설정되어있는 redirectUrl와 요청시 파라미터로 보낸 redirectUri/가 반드시 일치해야한다.
만일 /auth 로 인증을 시작 하였다면 /token 을 요청하였을때도 같은 redirect_url을 보내야한다.



5. scope
- 어플리케이션이 사용자 데이터에 접근하는 것을 제한하기 위해 사용된다 : email profile read write..
- 사용자에 의해 특정 스코프로 제한된 권한 인가권을 발행함으로써 데이터 접근을 제한한다
6. state
- 응용 프로그램은 임의의 문자열을 생성하고 요청에 포함하고 사용자가 앱을 승인한 후 서버로부터 동일한 값이 반환되는지 확인해야 한다.
- 이것은 CSRF 공격 을 방지하는 데 사용된다
References 및 사진 출처
정수원 스프링 시큐리티 OAuth2
'Spring > Oauth2' 카테고리의 다른 글
| Oauth2 Password Grant (0) | 2025.01.12 |
|---|---|
| Oauth2 Implicit Grant (0) | 2025.01.12 |
| Oauth2 Keycloak Docker compose, 기본세팅 (0) | 2025.01.12 |
| Oauth2 Authorization Code Grant (0) | 2025.01.12 |
| Oauth2 Grant Type 권한부여 유형 (0) | 2025.01.12 |