Quantcast
Channel: rfcタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 254

OpenID ConnectとOAuth 2.0の仕様とエンドポイント・パラメータ総まとめ(途中)

$
0
0
目的 OpenID Connect (略してOIDC) の活用方法を調べていて、たくさん存在している仕様文書に埋もれて迷子になってしまったので、自分用にまとめておきます。特に、エンドポイントごとに、どういったパラメータが存在しているのかは、一覧としてまとまっている物が 見当たらなかったので、 まとめてみました。時間をかけて少しずつ付け足して行ければと思います。 なお、パラメータは、必須のもの、推奨のもの、任意のものとありますが、それぞれ、フローやプロファイルによって、必須、不要など変わってくるので、一律記載することはしません。 そもそも作る必要が無かった可能性 OAuth Parameters にほぼ全部載ってた。(大体まとめ終わった後で気付いた) とはいえOIDC固有のものとか、Draft状態のものとか、一部載っていない物もあるので、ここにまとめる価値も少しはあると信じて。 少なくとも自分の勉強にはなりました。 一応目次(右にもあるけど) ※ 括弧書きで典型的なendpointのpathを記載していますが、実際にはMetadataで自由に指定できる物がほとんど。 Authorization Endpoint (/authorize) Token Endpoint (/token) Userinfo Endpoint (/userinfo) IDトークン (id_token) Authorization Server Metadata (/.well-known/oauth-authorization-server) Client Registration Endpoint (/register) Token Introspection Endpoint (/introspect) Front-Channel Logout (/frontchannel_logout) Back-Channel Logout (/backchannel_logout) RP-Initiated Logout (/logout) Federation Entity Configuration (/.well-known/openid-federation) Federation API Endpoint (/federation_api_endpoint) Porting data API Endpoint (/connect/port_data/me) Porting check API Endpoint (/connect/port_check) 参考文書 OAuth 2.0や、OpenID Connectが何たるかは、 @TakahikoKawasaki 先生のエントリを参考にしてください。私も延べ100回ぐらいは読み返していると思います。 OAuth 2.0 の仕様一覧 (IETF) IETF OAuth WGで策定されている仕様は、 @ritou 先生がまとめてくださっているので、そちらを参照してください。 OpenID Connect の仕様一覧 OpenID Connect Core 1.0 本家本元のOIDC仕様。 OpenID Connect Discovery 1.0 incorporating errata set 1 OP(OpenID Provider, もしくはIdP - ID ProviderとかAuthorization Serverとか) の情報(Metadata)を公開・取得する OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 1 OPに対してRP(Relying Party, もしくはService Providerとか)を登録して、client_id や client_secret 等をもらうための仕様 Draft: OpenID Connect Session Management 1.0 - draft 30 OpenID Connect Front-Channel Logout 1.0 - draft 04 ブラウザ経由 (Front-channel)でログアウトするための仕様 OpenID Connect Back-Channel Logout 1.0 - draft 06 OPからRPに対して直接ログアウトを要求するための仕様 OpenID Connect RP-Initiated Logout 1.0 - draft 01 RPからOPに対して直接ログアウトを要求するための仕様 OpenID Connect Federation 1.0 - draft 14 OpenID Connect MODRNA Authentication Profile 1.0 携帯キャリアが確認したユーザの携帯電話番号を login_hint_token に含めて送ることでログインを簡単にできるようにするための仕様 OpenID Connect Account Porting OPから別のOPにアカウントを移行するための仕様 (例えば、Facebookログインしていたサービスを、Twitterログインで使えるように移行できる) OpenID Connect User Questioning API 1.0 OpenID Connect Client Initiated Backchannel Authentication Flow - Core 1.0 draft-03 通称 CIBA (シーバ)。ユーザが認証するデバイスと、ユーザがサービスを利用するデバイスが異なる場合に認証するための仕様 OpenID Connect for Identity Assurance 1.0 「本人確認」済みの情報を提供するための仕組み。本人確認方法や確認した文書などを表現できる OpenID Foundationが策定しているOAuth 2.0 の拡張仕様一覧 OAuth 2.0 Multiple Response Type Encoding Practices OAuth 2.0 Form Post Response Mode Financial-grade API Security Profile 1.0 - Part 1: Baseline / Part 2: Advanced 「金融グレード」な、重要な情報などをやりとりするAPIでもOAuthを安全に使えるようにセキュリティレベルを取り決めたもの。 補足 仕様文書の種類 文書化された定義が見つからなくて、もしご存じの方がいたら教えて頂きたいのですが、私の理解では、大きく分けて下記4種類の仕様文書があると思います。 Core 仕様 RFC6749やOIDC Coreのように、本家本元の仕様 拡張仕様 (Extension) 本家本元の仕様にパラメータなどを追加して機能を拡張する仕様 ※まぁOIDCもRFC6749の拡張ではある プロファイル (Profile) FAPIのように、既存の仕様(Extension含む)の設定値を取り決めたもの。OAuthやOIDCには多種多様なフロー、任意のパラメータが存在している。それらに制約を入れることで、相互接続性を向上させたり、セキュリティを強化する効果がある。 非仕様文書 ベストプラクティスや攻撃モデルなど、実装に当たり参考にすべきもの エンドポイントの一覧 Authorization Endpoint (/authorize) リクエスト パラメータ 仕様 備考 response_type RFC 6749 code token など client_id RFC 6749 redirect_uri RFC 6749 OIDCでは必須 scope RFC 6749 state RFC 6749 response_mode OIDC Core OAuth 2.0 Multiple Response Type Encoding Practices としてOAuthを拡張 nonce OIDC Core display OIDC Core prompt OIDC Core max_age OIDC Core ui_locales OIDC Core login_hint OIDC Core claims OIDC Core acr_values OIDC Core request OIDC Core request_uri OIDC Core registration OIDC Core code_challenge RFC 7636 いまどき必須なPKCE code_challenge_method RFC 7636 いまどき必須なPKCE resource RFC 8707 login_hint_token OIDC MODRNA binding_message OIDC MODRNA レスポンス(正常) ※ レスポンスは redirect_uri に付加されたクエリパラメータやフラグメントとして返却される パラメータ 仕様 備考 code RFC 6749 state RFC 6749 access_token RFC 6749 implicit flow の場合 token_type RFC 6749 implicit flow の場合 expires_in RFC 6749 implicit flow の場合 scope RFC 6749 implicit flow の場合 session_state OIDC Session Management レスポンス(エラー) パラメータ 仕様 備考 error RFC 6749 error_description RFC 6749 error_uri RFC 6749 state RFC 6749 interaction_required OIDC Core prompt=none の場合 login_required OIDC Core prompt=none の場合 account_selection_required OIDC Core prompt=none の場合 consent_required OIDC Core prompt=none の場合 invalid_request_uri OIDC Core invalid_request_object OIDC Core request_not_supported OIDC Core request_uri_not_supported OIDC Core registration_not_supported OIDC Core Token Endpoint (/token) リクエスト パラメータ 仕様 備考 grant_type RFC 6749 code RFC 6749 redirect_uri RFC 6749 client_id RFC 6749 client_secret RFC 6749 通常はAuthorizationヘッダーを使う username RFC 6749 Resource Owner Password Credentials Flow の場合 password RFC 6749 Resource Owner Password Credentials Flow の場合 scope RFC 6749 refresh_token RFC 6749 assertion RFC 7521 RFC 6749 にも言及はあり client_assertion_type RFC 7521 client_assertion RFC 7521 client_assertion_type RFC 7521 code_verifier RFC 7636 いまどき必須なPKCE resource RFC 8707 audience RFC 8693 requested_token_type RFC 8693 subject_token RFC 8693 subject_token_type RFC 8693 actor_token RFC 8693 actor_token_type RFC 8693 issued_token_type RFC 8693 レスポンス(正常) ※ レスポンスは通常JSONとして返却される パラメータ 仕様 備考 access_token RFC 6749 token_type RFC 6749 expires_in RFC 6749 refresh_token RFC 6749 scope RFC 6749 レスポンス(エラー) パラメータ 仕様 備考 error RFC 6749 error_description RFC 6749 error_uri RFC 6749 Userinfo Endpoint (/userinfo) リクエスト RFC 6750 に従い、 access_token を Authorization ヘッダーにつけてリクエストする。そのほかのパラメータは不要。 レスポンス(正常) ※ レスポンスは通常JSONまたはJWTとして返却される 中身(claim)は id_token とほぼ同様。 レスポンス(エラー) RFC 6750 に従い、 WWW-Authenticate ヘッダーに記載される IDトークン (id_token) エンドポイントではないが、IDトークンも重要な情報なのでまとめておきます。 IDトークンの中身は、それぞれクレーム(claim)と呼ばれます。 中身の解説は IDトークンが分かれば OpenID Connect が分かる - Qiita を参照してください。 パラメータ 仕様 備考 iss OIDC Core sub OIDC Core aud OIDC Core exp OIDC Core iat OIDC Core auth_time OIDC Core nonce OIDC Core acr OIDC Core amr OIDC Core azp OIDC Core at_hash OIDC Core c_hash OIDC Core _claim_names OIDC Core _claim_sources OIDC Core given_name OIDC Core family_name OIDC Core middle_name OIDC Core nickname OIDC Core preferred_username OIDC Core profile OIDC Core picture OIDC Core website OIDC Core email OIDC Core email_verified OIDC Core gender OIDC Core birthdate OIDC Core zoneinfo OIDC Core locale OIDC Core phone_number OIDC Core phone_number_verified OIDC Core address OIDC Core StringではなくJSONなので注意 updated_at OIDC Core sid OIDC Front-Channel Logout session ID ログアウト時に利用 place_of_birth OIDC eKYC-IDA nationalities OIDC eKYC-IDA birth_family_name OIDC eKYC-IDA birth_given_name OIDC eKYC-IDA birth_middle_name OIDC eKYC-IDA salutation OIDC eKYC-IDA title OIDC eKYC-IDA msisdn OIDC eKYC-IDA 携帯電話番号 verified_claims OIDC eKYC-IDA aka OIDC Account Porting Authorization Server Metadata (/.well-known/oauth-authorization-server) OIDC Discovery が先に出てきて、あとからOAuth 2.0 (RFC 8414)に取り込まれたタイプ。 OIDC に対応するサーバは /.well-known/openid-configuration で公開する場合もあるが、コレもRFC 8414 の規定の範囲内 あとOIDCだと/.well-knownの前にパスが含まれる事も許容される。 リクエスト 普通に GET する レスポンス(正常) ※ レスポンスは通常JSONまたはJWTとして返却される パラメータ 仕様 備考 issuer RFC 8414 authorization_endpoint RFC 8414 token_endpoint RFC 8414 jwks_uri RFC 8414 registration_endpoint RFC 8414 scopes_supported RFC 8414 response_types_supported RFC 8414 response_modes_supported RFC 8414 grant_types_supported RFC 8414 token_endpoint_auth_methods_supported RFC 8414 token_endpoint_auth_signing_alg_values_supported RFC 8414 service_documentation RFC 8414 ui_locales_supported RFC 8414 op_policy_uri RFC 8414 op_tos_uri RFC 8414 revocation_endpoint RFC 8414 revocation_endpoint_auth_methods_supported RFC 8414 revocation_endpoint_auth_signing_alg_values_supported RFC 8414 introspection_endpoint RFC 8414 introspection_endpoint_auth_methods_supported RFC 8414 introspection_endpoint_auth_signing_alg_values_supported RFC 8414 code_challenge_methods_supported RFC 8414 userinfo_endpoint OIDC Discovery acr_values_supported OIDC Discovery subject_types_supported OIDC Discovery id_token_signing_alg_values_supported OIDC Discovery id_token_encryption_alg_values_supported OIDC Discovery id_token_encryption_enc_values_supported OIDC Discovery userinfo_signing_alg_values_supported OIDC Discovery userinfo_encryption_alg_values_supported OIDC Discovery userinfo_encryption_enc_values_supported OIDC Discovery request_object_signing_alg_values_supported OIDC Discovery request_object_encryption_alg_values_supported OIDC Discovery request_object_encryption_enc_values_supported OIDC Discovery display_values_supported OIDC Discovery claim_types_supported OIDC Discovery claims_supported OIDC Discovery claims_locales_supported OIDC Discovery claims_parameter_supported OIDC Discovery request_parameter_supported OIDC Discovery request_uri_parameter_supported OIDC Discovery require_request_uri_registration OIDC Discovery frontchannel_logout_supported OIDC Front-Channel Logout frontchannel_logout_session_supported OIDC Front-Channel Logout backchannel_logout_supported OIDC Back-Channel Logout backchannel_logout_session_supported OIDC Back-Channel Logout end_session_endpoint OIDC RP-Initiated Logout verified_claims_supported OIDC eKYC-IDA trust_frameworks_supported OIDC eKYC-IDA evidence_supported OIDC eKYC-IDA id_documents_supported OIDC eKYC-IDA id_documents_verification_methods_supported OIDC eKYC-IDA claims_in_verified_claims_supported OIDC eKYC-IDA verified_claims_supported OIDC eKYC-IDA client_registration_types_supported OIDC Federation organization_name OIDC Federation federation_registration_endpoint OIDC Federation request_authentication_methods_supported OIDC Federation port_data_endpoint OIDC Account Porting port_check_endpoint OIDC Account Porting port_enc_values_supported OIDC Account Porting Client Registration Endpoint (/register) これも、OIDC Registration が先に出てきて、あとからOAuth 2.0 (RFC 7591)に取り込まれたタイプ。 リクエスト JSONで送る パラメータ 仕様 備考 redirect_uris RFC 7591 token_endpoint_auth_method RFC 7591 response_types RFC 7591 grant_types RFC 7591 application_type OIDC Registration contacts RFC 7591 client_name RFC 7591 logo_uri RFC 7591 scope RFC 7591 client_uri RFC 7591 policy_uri RFC 7591 tos_uri RFC 7591 jwks_uri RFC 7591 jwks RFC 7591 sector_identifier_uri OIDC Registration subject_type OIDC Registration id_token_signed_response_alg OIDC Registration id_token_encrypted_response_alg OIDC Registration id_token_encrypted_response_enc OIDC Registration userinfo_signed_response_alg OIDC Registration userinfo_encrypted_response_alg OIDC Registration userinfo_encrypted_response_enc OIDC Registration request_object_signing_alg OIDC Registration request_object_encryption_alg OIDC Registration request_object_encryption_enc OIDC Registration token_endpoint_auth_signing_alg OIDC Registration default_max_age OIDC Registration require_auth_time OIDC Registration default_acr_values OIDC Registration initiate_login_uri OIDC Registration request_uris OIDC Registration software_id RFC 7591 software_version RFC 7591 software_statement RFC 7591 frontchannel_logout_uri OIDC Front-Channel Logout frontchannel_logout_session_required OIDC Front-Channel Logout backchannel_logout_uri OIDC Back-Channel Logout backchannel_logout_session_required OIDC Back-Channel Logout post_logout_redirect_uris OIDC RP-Initiated Logout client_registration_types OIDC Federation organization_name OIDC Federation レスポンス JSONで返却される。リクエストの内容もレスポンスに含む場合がある パラメータ 仕様 備考 client_id OIDC Registration client_secret OIDC Registration registration_access_token OIDC Registration registration_client_uri OIDC Registration client_id_issued_at OIDC Registration client_secret_expires_at OIDC Registration レスポンス(エラー) JSONで返却される パラメータ 仕様 備考 error RFC 7591 error_description RFC 7591 invalid_redirect_uri RFC 7591 invalid_client_metadata RFC 7591 invalid_software_statement RFC 7591 unapproved_software_statement RFC 7591 Token Introspection Endpoint (/introspect) リクエスト パラメータ 仕様 備考 token RFC 7662 token_type_hint RFC 7662 レスポンス JSONで返却される パラメータ 仕様 備考 active RFC 7662 scope RFC 7662 client_id RFC 7662 username RFC 7662 token_type RFC 7662 exp RFC 7662 iat RFC 7662 nbf RFC 7662 sub RFC 7662 aud RFC 7662 iss RFC 7662 jti RFC 7662 Front-Channel Logout (/frontchannel_logout) リクエスト iframeでURLを埋め込む パラメータ 仕様 備考 iss OIDC Front-Channel Logout sid OIDC Front-Channel Logout Back-Channel Logout (/backchannel_logout) リクエスト IDトークン形式で logout_tokenを作ってPOSTで送信する パラメータ 仕様 備考 iss OIDC Back-Channel Logout sub OIDC Back-Channel Logout aud OIDC Back-Channel Logout iat OIDC Back-Channel Logout jti OIDC Back-Channel Logout events OIDC Back-Channel Logout sid OIDC Back-Channel Logout RP-Initiated Logout (/logout) リクエスト IDトークン形式で logout_tokenを作ってPOSTで送信する パラメータ 仕様 備考 id_token_hint OIDC RP-Initiated Logout post_logout_redirect_uri OIDC RP-Initiated Logout state OIDC RP-Initiated Logout ui_locales OIDC RP-Initiated Logout XXX OIDC RP-Initiated Logout Federation Entity Configuration (/.well-known/openid-federation) リクエスト 普通に GET する レスポンス(正常) ※ レスポンスはJOSEとして返却される パラメータ 仕様 備考 iss OIDC Federation sub OIDC Federation iat OIDC Federation exp OIDC Federation jwks OIDC Federation aud OIDC Federation authority_hints OIDC Federation metadata OIDC Federation metadata_policy OIDC Federation constraints OIDC Federation crit OIDC Federation policy_language_crit OIDC Federation trust_marks OIDC Federation trust_anchor_id OIDC Federation Federation API Endpoint (/federation_api_endpoint) リクエスト パラメータ 仕様 備考 operation OIDC Federation iss OIDC Federation sub OIDC Federation aud OIDC Federation respondent OIDC Federation peer OIDC Federation type OIDC Federation anchor OIDC Federation is_leaf OIDC Federation レスポンス(正常) Fetching Entity Statements ※ レスポンスはJOSEとして返却される。中身はFederation Entity Configurationと同様。 Trust Negotiation ※ レスポンスはJSONとして返却される。中身はMetadataと同様。 Entity Listing ※ レスポンスはJSONとして返却される。 レスポンス(エラー) JSONで返却される パラメータ 仕様 備考 operation OIDC Federation error OIDC Federation error_description OIDC Federation Porting data API Endpoint (/connect/port_data/me) アカウント移行前の旧OPが提供し、移行後の新OPがアクセスする リクエスト GETリクエスト 新OPは、事前に旧OPに対しOAuth 2.0 (Authorization Code flow)でユーザの許諾を得てアクセストークンを取得しておく。 レスポンス パラメータ 仕様 備考 port_token OIDC Account Porting Porting check API Endpoint (/connect/port_check) アカウント移行前の旧OPが提供し、RPがアクセスする リクエスト パラメータ 仕様 備考 iss OIDC Account Porting enc_port_token OIDC Account Porting レスポンス パラメータ 仕様 備考 sub OIDC Account Porting aka OIDC Account Porting remove OIDC Account Porting

Viewing all articles
Browse latest Browse all 254

Trending Articles