「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>OpenID Connect]] * 目次 [#t67590f7] #contents *概要 [#wd796ac6] Finalを参照して記述。 -Client(RP)がメールアドレスやURLからユーザが利用しているIdp/STS(OP)を特定する方法 --WebFinger [RFC7033]を用いる。 --Idp/STS(OP)の特定 --[[OAuth]] 2.0 / [[OIDC>OpenID Connect]]エンドポイントの特定~ *詳細 [#o1a2d2ee] **OPディスカバリ [#w4317687] HTTPSで以下を送信する。 ***パラメタ [#x3929d2e] -Resource~ --エンドユーザの識別子。 --必要に応じて正規化が行われる。 --以下のエンドユーザの識別子がある。 ---メアド ---URL ---ホスト名とポート -Host~ Simple Web Discoveryサービスがホストされているサーバ -Rel~ サービスのタイプを識別するURI --型: OpenID Connect Issuer~ --値: http://openid.net/specs/connect/1.0/issuer ***リクエスト・レスポンスの例 [#tb8ba7e2] -共通項 --rel~ http://openid.net/specs/connect/1.0/issuer --host ---example.com ---若しくは、Resource中のhost部分 -リクエスト --メアド ---value : joe@example.com ---resource: acct:joe@example.com GET /.well-known/webfinger ?resource=acct%3Ajoe%40example.com &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1 Host: example.com --URL ---value : https://example.com/joe ---resource: https://example.com/joe GET /.well-known/webfinger ?resource=https%3A%2F%2Fexample.com%2Fjoe &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1 Host: example.com --ホスト名とポート ---value : example.com:8080 ---resource: https://example.com:8080/ GET /.well-known/webfinger ?resource=https%3A%2F%2Fexample.com%3A8080%2F &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1 Host: example.com:8080 --acct URI スキーム ---value : acct:juliet%40capulet.example@shopping.example.com ---resource: acct:juliet%40capulet.example@shopping.example.com GET /.well-known/webfinger ?resource=acct%3Ajuliet%2540capulet.example%40shopping.example.com &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1 Host: shopping.example.com -レスポンス HTTP/1.1 200 OK Content-Type: application/jrd+json { "subject": "xxxxxx", ---> ココに要求したResourceの値が入る。 "links": [ { "rel": "http://openid.net/specs/connect/1.0/issuer", "href": "https://server.example.com" } ] } **OP構成情報 [#x02c9151] issuerに「/.well-known/openid-configuration」を連結したURLを使用。 ***要求 [#q105e7fa] GET /.well-known/openid-configuration HTTP/1.1 Host: example.com ***応答 [#k15d8ab7] { "issuer": "https://server.example.com", "authorization_endpoint": "https://server.example.com/authorize", "token_endpoint": "https://server.example.com/token", "token_endpoint_auth_methods_supported": ["client_secret_basic", "private_key_jwt"], "token_endpoint_auth_signing_alg_values_supported": ["RS256", "ES256"], "userinfo_endpoint": "https://server.example.com/userinfo", "jwks_uri": "https://server.example.com/jwks.json", "registration_endpoint": "https://server.example.com/register", "scopes_supported": ["openid", "profile", "email", "address", "phone", "offline_access"], "response_types_supported": ["code", "code token"], "service_documentation": "http://server.example.com/service_documentation.html", "ui_locales_supported": ["en-US", "en-GB", "en-CA", "fr-FR", "fr-CA"] } *パラメタ [#ab172aec] **基本要素 [#re40e58e] -issuer (REQUIRED) --WebFingerから返されるissuerの値(href)と同じ --QueryやFragmentのComponentを含まないhttpsスキームのURL **エンドポイント [#jc3011cd] ***[[OAuth]] 2.0 [#o60dffdd] -authorization_endpoint (REQUIRED)~ 認可エンドポイントのURL -token_endpoint (REQUIRED) --TokenエンドポイントのURL --Implicitのみの場合は割愛可。 -token_endpoint_auth_methods_supported (OPTIONAL) --Tokenエンドポイントでサポートされている認証タイプのリストを含むJSON配列 --client_secret_basic、client_secret_post、client_secret_jwt、およびprivate_key_jwt -userinfo_endpoint (RECOMMENDED)~ [[ユーザ情報エンドポイント>OpenID Connect - ユーザー属性クレーム関連#k1d9c845]]のURL ***[[Registration>OpenID Connect - Dynamic Client Registration]] [#u6f5f093] -registration_endpoint (RECOMMENDED)~ 動的クライアント登録エンドポイントのURL -service_documentation (OPTIONAL) --開発者向け情報ページのURL。 --Dynamic Client Registrationをサポートしていない場合 ***[[Session Management>OpenID Connect#z36f893f]] [#xd4cf185] -refresh_session_endpoint~ リフレッシュ・セッション・エンドポイントのURL -end_session_endpoint~ エンド・セッション・エンドポイントのURL **署名・暗号化 [#e1a23468] ***[[JWK]] [#wd9b482a] -jwk_url (REQUIRED) --署名用の[[JWK Set 公開鍵>JWK#od5799a4]]のURL。 --暗号化用の[[JWK Set 共通>JWK#i6436458]]のURL。 ***Requestオブジェクト関連 [#z9123ea9] -requestパラメタ --request_parameter_supported -request_uriパラメタ --request_uri_parameter_supported --require_request_uri_registration ***アルゴリズム [#w858cfce] [[JWS]]と[[JWE]]のアルゴリズム([[JWA]])のリストを含むJSON配列 -[[IDトークン>OpenID Connect#ofb73c59]] --id_token_signing_alg_values_supported (REQUIRED) ---[[JWS]]署名アルゴリズム(alg値)のリストを含むJSON配列 ---RS256をサポートしなければならない。 --id_token_encryption_alg_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(alg値)のリストを含むJSON配列 --id_token_encryption_enc_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(enc値)のリストを含むJSON配列 -[[ユーザ情報エンドポイント>OpenID Connect - ユーザー属性クレーム関連#k1d9c845]] --userinfo_signing_alg_values_supported (OPTIONAL) ---[[JWS]]署名アルゴリズム(alg値)のリストを含むJSON配列 ---noneを含めることができる。 --userinfo_encryption_alg_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(alg値)のリストを含むJSON配列 --userinfo_encryption_enc_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(enc値)のリストを含むJSON配列 -Tokenエンドポイント~ private_key_jwtとclient_secret_jwt認証メソッド用 --token_endpoint_auth_signing_alg_values_supported ---[[JWS]]署名アルゴリズム(alg値)のリストを含むJSON配列 ---RS256をサポートしなければならない(noneはダメ)。 -[[Requestオブジェクト関連>#z9123ea9]] --request_object_signing_alg_values_supported (OPTIONAL) ---[[JWS]]署名アルゴリズム(alg値)のリストを含むJSON配列 ---noneとRS256をサポートしなければならない。 --request_object_encryption_alg_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(alg値)のリストを含むJSON配列 --request_object_encryption_enc_values_supported (OPTIONAL)~ [[JWE]]暗号化アルゴリズム(enc値)のリストを含むJSON配列 **各種オプション [#nae1fda3] ***[[OAuth]] 2.0 / [[OIDC>OpenID Connect]] [#w8bdaea3] -scopes_supported (RECOMMENDED)~ サポートする[[scope>OAuth#qd3e1385]]値のリストを含むJSON配列 -response_types_supported (REQUIRED)~ サポートする[[response_type>OpenID Connect#aff816e3]]値のリストを含むJSON配列 -response_modes_supported (OPTIONAL) --サポートする[[response_mode>OAuth 2.0 Form Post Response Mode]]値 のJSON配列 --既定値は["query"、 "fragment"] -grant_types_supported (OPTIONAL) --サポートする[[grant_type>OAuth#p23cde9e]]値 のJSON配列 --既定値は["authorization_code"、 "implicit"] ***[[OIDC>OpenID Connect]] [#t527fffb] -subject_types_supported (REQUIRED)~ サポートする[[subクレームの種類>OpenID Connect - ユーザー属性クレーム関連#cf801b20]] のJSON配列 --public(既定値) --pairwise -claims_supported (RECOMMENDED) --クレーム名のリストを含むJSON配列 -acr_values_supported (OPTIONAL)~ サポートする認証コンテキストクラス参照のリストを含む -その他 --display_values_supported (OPTIONAL) --claim_types_supported (OPTIONAL) -- *参考 [#f8bc0fc9] -Final: OpenID Connect Discovery 1.0 incorporating errata set 1~ http://openid.net/specs/openid-connect-discovery-1_0.html -sat's memo: OpenID Connect Discovery 1.0 - draft 09 日本語私訳~ http://blog.toke.jp/2012/07/draft-openid-connect-discovery-1.html -Add url of the "https://.../.well-known/openid-configuration."~ · Issue #83 · OpenTouryoProject/MultiPurposeAuthSite~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/issues/83 **[[Dynamic Client Registration>OpenID Connect - Dynamic Client Registration]] [#g8fdf977] ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]