Appearance
토큰
OAuth 2.0 토큰 엔드포인트입니다. 인가코드를 토큰으로 바꾸고, 만료 전에 갱신합니다.
흐름 전체는 공통 › 로그인 연동 에 있습니다 — 이 페이지는 그 흐름에서 호출하는 엔드포인트의 요청·응답 스키마입니다.
- Authorization Code + PKCE 만 지원합니다(
code_challenge_method=S256). - 공개 클라이언트라 client secret 이 없습니다.
- refresh token 은 1회용입니다. 갱신하면 새 값으로 교체되고 직전 값은 무효가 됩니다.
엔드포인트 주소는 discovery 에서 읽으세요
GET /.well-known/openid-configuration 에 token_endpoint · authorization_endpoint · jwks_uri 가 실려 있습니다. URL 을 코드에 박지 마세요.
인가 코드 발급
POST
/oauth/authorize
OAuth 2.0 Authorization Code Grant 의 인가 코드(authorization code)를 발급한다. 로그인된 사용자에 대해, 클라이언트가 등록한 redirect_uri 로 전달할 1회용 코드다.
발급된 코드는 POST /oauth/token 에서 access token 으로 교환한다.
Request
🔒 Bearer 인증 필요 · 인증 방법POST
/oauth/authorizeRequest Body
AuthorizeRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
redirectUri | string | required | OAuth2 redirect_uri — 코드를 실어 돌려보낼 클라이언트 URL. clientId 를 주면 그 클라이언트에 등록된 리디렉션 URI 와 정확히 일치해야 하고, 없으면 1st-party 허용목록 오리진이어야 한다. | |
clientId | string | optional | 외부 앱의 공개 클라이언트 ID. 생략하면 1st-party(인증웹 자신)로 간주한다. 이 값은 발급되는 코드에 기록되어, 토큰 교환 때 요청 Origin 대조의 기준이 된다. | |
codeChallenge | string | required | PKCE code_challenge = BASE64URL(SHA256(code_verifier)), 43자. S256 만 받는다. 발급되는 코드에 기록되어 교환 때 code_verifier 와 대조된다. |
Response
200
AuthorizeResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
code | string | required | 1회용 인가코드(ac_...) |
토큰 발급/갱신
POST
/oauth/token
grant_type=authorization_code 는 인가코드(code)를 토큰으로 교환한다. 코드에 기록된 클라이언트의 등록 오리진과 요청 Origin 이 일치해야 한다.
grant_type=refresh_token 은 refresh token(바디 또는 httpOnly 쿠키)을 갱신한다. refresh token 은 1회용이다 — 갱신에 성공하면 새 refresh token 이 나오고 직전 것은 그 즉시 무효가 된다(rotate). 응답으로 받은 새 값으로 반드시 교체해 두고, 이전 값을 다시 보내면 거부된다. 같은 토큰으로 두 번 갱신하거나, 갱신 응답을 저장하지 못한 채 재시도하면 세션이 끊어진다.
Request
POST
/oauth/tokenRequest Body
TokenRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
grant_type | string | required | authorization_code, refresh_token | grant 종류 |
code | string | optional | authorization_code grant 의 인가코드(ac_...) | |
refresh_token | string | optional | refresh_token grant 의 refresh token(rt_...). 생략 시 httpOnly 쿠키에서 읽는다. | |
code_verifier | string | optional | PKCE code_verifier(RFC 7636). authorization_code grant 에 **필수**다. 인가 요청 때 보낸 code_challenge 의 원본으로, BASE64URL(SHA256(이 값)) 이 일치해야 한다. |
Response
200
TokenResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
accessToken | string | required | access token(JWT) | |
tokenType | string | required | 토큰 타입 | |
expiresIn | number | required | access token 만료(초) | |
refreshToken | string | required | refresh token(불투명, rt_...). **1회용이다** — 이 값으로 갱신하면 새 refresh token 이 발급되고 이 값은 그 즉시 무효가 된다. 응답을 받으면 반드시 새 값으로 교체해 보관할 것. | |
refreshExpiresAt | string | required | refresh token 만료 시각(ISO8601) |
공개키셋(JWKS)
GET
/.well-known/jwks.json
access token 서명 검증에 쓰는 공개키를 반환한다. 토큰 헤더의 kid 로 키를 고른다.
키를 교체해도 퇴역한 키의 공개키가 남아 있어, 이미 발급된 토큰은 만료될 때까지 검증된다. 주소는 discovery 문서의 jwks_uri 로 알아내는 것을 권장한다.
Request
GET
/.well-known/jwks.jsonResponse
200
Jwks
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
keys | JsonWebKey[] | required | 공개키 목록 |
JsonWebKey
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
kty | string | required | 키 종류 | |
crv | string | optional | 곡선 이름(EC 키) | |
x | string | optional | 공개키 x 좌표(base64url) | |
y | string | optional | 공개키 y 좌표(base64url) | |
kid | string | optional | 키 식별자. 토큰 헤더의 `kid` 와 대조해 검증 키를 고른다. | |
alg | string | optional | 서명 알고리즘 | |
use | string | optional | 키 용도 |
Discovery 문서
GET
/.well-known/openid-configuration
로그인·토큰 발급·공개키 주소를 한 번에 알려준다(RFC 8414 / OpenID Connect Discovery). 표준 클라이언트 라이브러리는 이 주소만으로 연동을 마칠 수 있다.
지원하는 흐름은 authorization code + PKCE(S256) 이며, 모든 인가 코드에 PKCE 를 요구한다.
Request
GET
/.well-known/openid-configurationResponse
200
OpenIdConfiguration
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
issuer | string | optional | 발급자 식별자. access token 의 `iss` 클레임과 같다. | |
authorization_endpoint | string | optional | 로그인 화면 주소. 인가 요청을 이리로 보낸다. | |
token_endpoint | string | optional | 토큰 발급·갱신 주소. | |
jwks_uri | string | optional | access token 서명 검증용 공개키셋(JWKS) 주소. | |
grant_types_supported | string[] | required | 지원하는 grant type. | |
response_types_supported | string[] | required | 지원하는 response type. | |
code_challenge_methods_supported | string[] | required | 지원하는 PKCE 코드 챌린지 방식. 모든 인가 코드에 PKCE 를 요구한다. | |
token_endpoint_auth_methods_supported | string[] | required | 토큰 엔드포인트의 클라이언트 인증 방식. 공개 클라이언트라 `none` 이다. | |
id_token_signing_alg_values_supported | string[] | required | 토큰 서명 알고리즘. 대칭 폴백 모드에서는 빈 배열이다. | |
subject_types_supported | string[] | required | 지원하는 subject 식별자 유형. |