目的
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
↧