- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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]]にして送信する。
-[[ココ>OpenID Connect#nd004268]]に書いた、request, request_uriパラメタに指定する。
*詳細 [#fb32947d]
-サポートについて
--[[Discoveryのrequest_parameter_supported>OpenID Connect - Discovery#x644e3d9]]でサポート状況を確認できる。
--要求があった場合に、サポートしていない場合、request_not_supported エラーを返す。
(Clientから[[JWT]]を送信するという意味では、)~
[[JWT bearer token authorizationグラント種別]]の亜種的仕様。
-Requestオブジェクトを利用する場合にも、他のパラメタを送信するケースがある。~
この場合、Requestオブジェクト内のパラメタと重複しても良い。
--response_type, client_id ([[OAuth]] 2.0で必須)
--scope="* openid *" ([[OIDC>OpenID Connect]]で必須)
--state, nonce 等 (可変パラメタ対応)
**サポート [#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]]