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

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