「[[マイクロソフト系技術情報 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]
[[亜種的仕様。>#fb32947d]]
ClientからOP(IdP/STS)に[[JWT]]を送るという意味では似ている。

**[[JWT Secured Authorization Request (JAR)]] [#j33fec21]
別途、仕様に書き起こしたもの([[FAPI2>FAPI Part 2 (Read and Write API Security Profile)]]でも使用するので)。

----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]



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