「[[マイクロソフト系技術情報 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

-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 (&color(red){REQUIRED};)
--署名用の[[JWK Set 公開鍵>JWK#od5799a4]]のURL。
--暗号化用の[[JWK Set 共通>JWK#i6436458]]のURL。

***[[Requestオブジェクト関連>OpenID Connect - Requestオブジェクト]] [#z9123ea9]
-requestパラメタ
--request_parameter_supported (OPTIONAL)
---requestパラメタのサポート
---既定値はfalse

-request_object_endpoint ([[F-API2>FAPI Part 2 (Read and Write API Security Profile)]])~
--Requestオブジェクト登録用エンドポイント
--「/ros」などの値を使用する。
--この場合、request_uriはurnになる。

-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_endpoint_auth_signing_alg_values_supported (OPTIONAL)
---[[JWS]]署名アルゴリズム(alg値)
---RS256をサポートしなければならない(noneはダメ)。

-[[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]]

--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)

*参考 [#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]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS