OpenID Connect(OIDC)
OIDC
References
- OIDC
- OpenID Connect
- Minimal: Core
- Dynamic: Minimal, Discovery, Dynamic Client Registration
- Complete: Dynamic, Session Management, Form Post Response Mode
- OP
- OpenID Connect Provider
- RP
- Relying Party
Discovery
References
OP는 GET <issuer>/.well-known/openid-configuration를 통해 설정정보를 노출합니다.
- 필수(required)
issuer: <issuer>- OP가 발급한 ID token의
iss의 값과 같아야합니다.
- OP가 발급한 ID token의
authorization_endpoint: <authorizationEndpoint>- 인증 코드나 토큰을 발급하는 엔드포인트입니다.
token_endpoint: <tokenEndpoint>- 토큰을 발급하거나 갱신하는 엔드포인트입니다.
- Implicit Flow만 사용하는 경우 필수가 아닙니다.
jwks_uri: <jwksURI>- RP가 OP로부터 받은 토큰의 서명을 검증하기 위해 사용할 수 있는 JWK 정보를 제공하는 URI입니다.
response_types_supported: [<responseType>]- Dynamic OP는
code,id_token,id_token token을 필수로 지원해야합니다.
- Dynamic OP는
subject_types_supported: [<subjectType>]public,pairwise
id_token_signing_alg_values_supported: [<alg>]RS256를 필수로 지원해야합니다.
- 추천(recommended)
userinfo_endpoint: <userinfoEndpoint>access_token에 해당하는 사용자 정보를 제공하는 엔드포인트입니다.- 이 엔드포인트를 사용하는 것으로 토큰 검증을 대체할 수 있습니다.
registration_endpoint: <registrationEndpoint>scopes_supported: [<scope>]openid를 필수로 지원해야합니다.
claims_supported: [<claim>]end_session_endpoint: <endSessionEndpoint>
- 선택(optional)
response_modes_supported: [<responseMode>]grant_types_supported: [<grantType>]- Dynamic OP는
authorization_code,implicit을 필수로 지원해야합니다.
- Dynamic OP는
acr_values_supported: [<acrValue>]id_token_encryption_alg_values_supported: [<alg>]id_token_encryption_enc_values_supported: [<enc>]userinfo_signing_alg_values_supported: [<alg>]userinfo_encryption_alg_values_supported: [<alg>]userinfo_encryption_enc_values_supported: [<enc>]request_object_signing_alg_values_supported: [<alg>]request_object_encryption_alg_values_supported: [<alg>]request_object_encryption_enc_values_supported: [<enc>]token_endpoint_auth_methods_supported: [<method>]token_endpoint_auth_signing_alg_values_supported: [<alg>]display_values_supported: [<display>]claim_types_supported: [<claimType>]service_documentation: <serviceDocumentationURL>claims_locales_supported: [<locale>]ui_locales_supported: [<locale>]claims_parameter_supported: <boolean>request_parameter_supported: <boolean>request_uri_parameter_supported: <boolean>require_request_uri_registration: <boolean>op_policy_uri: <policyURI>op_tos_uri: <tosURI>
Test
token_endpoint
curl '<token_endpoint>' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=<clientID>' \
-d 'client_secret=<clientSecret>' \
-d 'grant_type=password' \
-d 'username=<user>' \
-d 'password=<password>' \
| jq '.'