- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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]>https://tools.ietf.org/html/rfc7033]]を用いる。
--Idp/STS(OP)の特定
--[[OAuth]] 2.0 / [[OIDC>OpenID Connect]]エンドポイントの特定~
*詳細 [#o1a2d2ee]
TLSサポートと、TLS証明書のチェックが必要。
**OPディスカバリ [#w4317687]
***パラメタ [#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]
HTTP/1.1 200 OK
Content-Type: application/json
{
"issuer":
"https://server.example.com",
"authorization_endpoint":
"https://server.example.com/connect/authorize",
"token_endpoint":
"https://server.example.com/connect/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/connect/userinfo",
"check_session_iframe":
"https://server.example.com/connect/check_session",
"end_session_endpoint":
"https://server.example.com/connect/end_session",
"jwks_uri":
"https://server.example.com/jwks.json",
"registration_endpoint":
"https://server.example.com/connect/register",
"scopes_supported":
["openid", "profile", "email", "address",
"phone", "offline_access"],
"response_types_supported":
["code", "code id_token", "id_token", "token id_token"],
"acr_values_supported":
["urn:mace:incommon:iap:silver",
"urn:mace:incommon:iap:bronze"],
"subject_types_supported":
["public", "pairwise"],
"userinfo_signing_alg_values_supported":
["RS256", "ES256", "HS256"],
"userinfo_encryption_alg_values_supported":
["RSA1_5", "A128KW"],
"userinfo_encryption_enc_values_supported":
["A128CBC-HS256", "A128GCM"],
"id_token_signing_alg_values_supported":
["RS256", "ES256", "HS256"],
"id_token_encryption_alg_values_supported":
["RSA1_5", "A128KW"],
"id_token_encryption_enc_values_supported":
["A128CBC-HS256", "A128GCM"],
"request_object_signing_alg_values_supported":
["none", "RS256", "ES256"],
"display_values_supported":
["page", "popup"],
"claim_types_supported":
["normal", "distributed"],
"claims_supported":
["sub", "iss", "auth_time", "acr",
"name", "given_name", "family_name", "nickname",
"profile", "picture", "website",
"email", "email_verified", "locale", "zoneinfo",
"http://example.info/claims/groups"],
"claims_parameter_supported":
true,
"service_documentation":
"http://server.example.com/connect/service_documentation.html",
"ui_locales_supported":
["en-US", "en-GB", "en-CA", "fr-FR", "fr-CA"]
}
*パラメタ [#ab172aec]
-追加のパラメタを定義可能
-[[Session Management>#xd4cf185]]など、他の仕様で定義されているものもある。
**基本要素 [#re40e58e]
-issuer (&color(red){REQUIRED};)
--WebFingerから返されるissuerの値(href)と同じ
--QueryやFragmentのComponentを含まないhttpsスキームのURL
-op_policy_uri (OPTIONAL)~
Clientをに登録する人に向けてOPの要求事項を提供するURL。
-op_tos_uri (OPTIONAL)~
Clientをに登録する人に向けてOPの利用規約を提供するURL。
**エンドポイント [#jc3011cd]
***[[OAuth]] 2.0 [#o60dffdd]
-authorization_endpoint (&color(red){REQUIRED};)~
認可エンドポイントのURL
-token_endpoint (&color(red){REQUIRED};)
--TokenエンドポイントのURL
--Implicitのみの場合は割愛可。
-token_endpoint_auth_methods_supported (OPTIONAL)
--Tokenエンドポイントでサポートされている認証タイプのリストを含むJSON配列
--client_secret_basic、client_secret_post、client_secret_jwt、およびprivate_key_jwt
--[[client_secret_basic>OpenID Connect - クライアント認証#d44d4615]]、[[client_secret_post>OpenID Connect - クライアント認証#b718e26d]]、[[client_secret_jwt>OpenID Connect - クライアント認証#cee38fe3]]、および[[private_key_jwt>OpenID Connect - クライアント認証#yb874b80]]
-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をサポートしていない場合
***[[Requestオブジェクト関連>#z9123ea9]] [#x1d64798]
-request_object_endpoint ([[F-API2>FAPI Part 2 (Read and Write API Security Profile)]])~
--Requestオブジェクト登録用エンドポイント
--「/ros」などの値を使用する。
--この場合、request_uriは
---暗号ランダム値を含むurnになる。
---値は、[[Requestオブジェクト登録リクエストのレスポンス>FAPI Part 2 (Read and Write API Security Profile)#ha94c6d8]]で変える。
***[[Session Management>OpenID Connect#z36f893f]] [#xd4cf185]
-refresh_session_endpoint~
リフレッシュ・セッション・エンドポイントのURL
-end_session_endpoint~
エンド・セッション・エンドポイントのURL
**署名・暗号化 [#e1a23468]
***[[JWK]] [#wd9b482a]
-jwk_url (&color(red){REQUIRED};)
--署名用の[[JWK Set 公開鍵>JWK#od5799a4]]のURL。
--暗号化用の[[JWK Set 共通>JWK#i6436458]]のURL。
***Requestオブジェクト関連 [#z9123ea9]
-requestパラメタ
--request_parameter_supported (OPTIONAL)
---requestパラメタのサポート
---既定値はfalse
-request_uriパラメタ
--request_uri_parameter_supported (OPTIONAL)
---request_uriパラメタのサポート
---既定値はfalse
--require_request_uri_registration (OPTIONAL)
---request_uri事前登録の要否
---既定値はfalse
***アルゴリズム [#w858cfce]
[[JWS]]と[[JWE]]のアルゴリズム([[JWA]])のリストを含むJSON配列
-Tokenエンドポイント~
private_key_jwtとclient_secret_jwt認証メソッド用
-[[Tokenエンドポイント>OAuth#u2222b3c]]関連~
[[client_secret_jwt>OpenID Connect - クライアント認証#cee38fe3]]、および[[private_key_jwt>OpenID Connect - クライアント認証#yb874b80]]認証
--token_endpoint_auth_signing_alg_values_supported (OPTIONAL)
---[[JWS]]署名アルゴリズム(alg値)
---RS256をサポートしなければならない(noneはダメ)。
-[[IDトークン>OpenID Connect#ofb73c59]]
-[[IDトークン>OpenID Connect#ofb73c59]]関連
--id_token_signing_alg_values_supported (&color(red){REQUIRED};)
---[[JWS]]署名アルゴリズム(alg値)
---RS256をサポートしなければならない(noneはダメ)。
--id_token_encryption_alg_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(alg値)
--id_token_encryption_enc_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(enc値)
-[[ユーザ情報エンドポイント>OpenID Connect - ユーザー属性クレーム関連#k1d9c845]]
-[[ユーザ情報エンドポイント>OpenID Connect - ユーザー属性クレーム関連#k1d9c845]]関連
--userinfo_signing_alg_values_supported (OPTIONAL)
---[[JWS]]署名アルゴリズム(alg値)
---noneを含めることができる。
--userinfo_encryption_alg_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(alg値)
--userinfo_encryption_enc_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(enc値)
-[[Requestオブジェクト関連>#z9123ea9]]
--request_object_signing_alg_values_supported (OPTIONAL)
---[[JWS]]署名アルゴリズム(alg値)
---noneとRS256をサポートしなければならない。
--request_object_encryption_alg_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(alg値)
--request_object_encryption_enc_values_supported (OPTIONAL)~
[[JWE]]暗号化アルゴリズム(enc値)
**各種オプション [#nae1fda3]
***[[OAuth]] 2.0 / [[OIDC>OpenID Connect]] [#w8bdaea3]
-response_types_supported (&color(red){REQUIRED};)~
サポートする[[response_type>OpenID Connect#aff816e3]]値のリストを含むJSON配列
-scopes_supported (RECOMMENDED)~
サポートする[[scope>OAuth#qd3e1385]]値のリストを含む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 (&color(red){REQUIRED};)~
サポートする[[subクレームの種類>OpenID Connect#cf801b20]] のJSON配列
--public(既定値)
--pairwise
-claims
--claims_parameter_supported (OPTIONAL)
---claimsパラメタのサポート
---既定値はfalse
--claims_supported (RECOMMENDED)~
クレーム名のリストを含むJSON配列
-acr_values_supported (OPTIONAL)~
サポートする認証コンテキストクラス参照のリストを含む
-その他
--display_values_supported (OPTIONAL)
--claim_types_supported (OPTIONAL)
--ロケール
---claims_locales_supported (OPTIONAL)
---ui_locales_supported (OPTIONAL)
***[[Requestオブジェクト関連>OpenID Connect - Requestオブジェクト]] [#z9123ea9]
-requestパラメタ
--request_parameter_supported (OPTIONAL)
---requestパラメタのサポート
---既定値はfalse
-request_uriパラメタ
--request_uri_parameter_supported (OPTIONAL)
---request_uriパラメタのサポート
---既定値はfalse
--require_request_uri_registration (OPTIONAL)
---request_uri事前登録の要否
---既定値はfalse
*参考 [#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
-keycloakのServer Metadataの変遷 - Qiita~
https://qiita.com/tnorimat/items/74100ba1fdd66b313585
-Add url of the "https://.../.well-known/openid-configuration."~
· Issue #83 · OpenTouryoProject/MultiPurposeAuthSite~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/issues/83
**RFC 8414 - OAuth 2.0 Authorization Server Metadata [#sdb9a190]
https://tools.ietf.org/html/rfc8414
**[[Dynamic Client Registration>OpenID Connect - Dynamic Client Registration]] [#g8fdf977]
----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]