「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>OpenID Connect]] * 目次 [#sb3dca1c] #contents *概要 [#x39ca132] Finalを参照して記述。 -Authorization Request に署名および暗号化を可能にする。 -具体的には、[[ココ>OAuth#xd504f07]]や[[ココ>OpenID Connect#nd004268]]のパラメタ群を[[JWT]]にして送信する。 *詳細 [#fb32947d] (Clientから[[JWT]]を送信するという意味では、)~ [[JWT bearer token authorizationグラント種別]]の亜種的仕様。 **サポート [#b99afde2] -[[Discovery>OpenID Connect - Discovery]]のパラメタでサポート状況を確認できる。 --[[request_parameter_supported>OpenID Connect - Discovery#z9123ea9]] --[[request_uri_parameter_supported>OpenID Connect - Discovery#z9123ea9]] -要求をサポートしていない場合、それぞれ、 --request_not_supported --request_uri_not_supported > エラーを返す。 **パラメタ [#ddeafb5a] Requestオブジェクトを利用する場合、 -[[ココ>OpenID Connect#nd004268]]に書いた、request, request_uriパラメタに指定する。 -他のパラメタを送信するケースがある。~ --送信する可能性のあるパラメタ ---response_type, client_id ([[OAuth]] 2.0で必須) ---scope="* openid *" ([[OIDC>OpenID Connect]]で必須) ---state, nonce 等 (可変パラメタ対応) --この場合、Requestオブジェクト内のパラメタと重複しても良い~ (重複は一致すること。実際使用するのはRequestオブジェクト側)。 **フォーマットとコンテンツ [#mf5aeed2] ***概要 [#eb357b29] -urlセーフな[[JWT]]である必要があるが、署名および暗号化のアルゴリズムは任意 --noneも可 --[[Discovery>OpenID Connect - Discovery#z9123ea9]]で確認 -issとaudが必要で、[[IDトークン>OpenID Connect#ofb73c59]]と逆になる([[Self-Issued Assertionのユースケース>JWT bearer token authorizationグラント種別#n8fdd9f7]])。 ***ペイロードの例 [#ge4d9292] 以下は、ペイロードの例 { "iss": "s6BhdRkqt3", "aud": "https://server.example.com", "response_type": "code id_token", "client_id": "s6BhdRkqt3", "redirect_uri": "https://client.example.org/cb", "scope": "openid", "state": "af0ifjsldkj", "nonce": "n-0S6_WzA2Mj", "max_age": 86400, "claims": { "userinfo": { "given_name": {"essential": true}, "nickname": null, "email": {"essential": true}, "email_verified": {"essential": true}, "picture": null }, "id_token": { "gender": null, "birthdate": {"essential": true}, "acr": {"values": ["urn:mace:incommon:iap:silver"]} } } } **送信方法 [#le074655] ***requestパラメタ [#macbe9a6] -認可リクエストの例 https://server.example.com/authorize? response_type=code%20id_token &client_id=s6BhdRkqt3 &scope=openid &state=af0ifjsldkj&nonce=n-0S6_WzA2Mj &request=Requestオブジェクト ***request_uriパラメタ [#pc87374e] -512 ASCII 文字 -Authorization Serverからのアクセスに限定する。 --ライフタイムに応じた適切なエントロピー、 --若しくは、なんらかのアクセスコントロールの実施。 --パラメタの例~ https://client.example.org/request.jwt#GkurKxf5T0Y-mnPFCHqWOMiZi4VS138cQO_V7PZHAdM ※ URIフラグメントは、キャッシュに使用するペイロードのSHA-256ハッシュのBase64URL値 -事前登録 --[[Discovery>OpenID Connect - Discovery#z9123ea9]]で確認 --[[Registration>OpenID Connect - Dynamic Client Registration#qebcb733]]で登録 -認可リクエストの例 https://server.example.com/authorize? response_type=code%20id_token &client_id=s6BhdRkqt3 &scope=openid &state=af0ifjsldkj&nonce=n-0S6_WzA2Mj &request_uri=https%3A%2F%2Fclient.example.org%2Frequest.jwt%23GkurKxf5T0Y-mnPFCHqWOMiZi4VS138cQO_V7PZHAdM -Requestオブジェクトのリクエスト例 GET /request.jwt HTTP/1.1 Host: client.example.org *参考 [#k25c60f4] -Final: OpenID Connect Core 1.0 incorporating errata set 1 > 6. Passing Request Parameters as JWTs~ https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#JWTRequests **[[JWT bearer token authorizationグラント種別]] [#g5cb2aa1] ClientからOP(IdP/STS)に[[JWT]]を送るという意味では似ている。 **[[JWT Secured Authorization Request (JAR)]] [#j33fec21] 別途、仕様に書き起こしたもの([[FAPI2>FAPI Part 2 (Read and Write API Security Profile)]]でも使用するので)。 ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]