본문으로 건너뛰기

OpenID Connect(OIDC)

OIDC

  • 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

OP는 GET <issuer>/.well-known/openid-configuration를 통해 설정정보를 노출합니다.

  • 필수(required)
    • issuer: <issuer>
      • OP가 발급한 ID token의 iss의 값과 같아야합니다.
    • 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을 필수로 지원해야합니다.
    • 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을 필수로 지원해야합니다.
    • 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 '.'