Open2

RFC 7523 JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants

yapooyapoo

RFC 7523 - JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants

概要

RFC 7521 (参考) では OAuth 2.0 のトークンエンドポイントにおける認可グラントまたはクライアント認証の方法としてアサーションを用いる方法が定義されたが、アサーションの具体的な形式等については述べられていなかった。

本仕様ではアサーションとして JWT を用いる方法が定義されている。

認可グラントとして用いる場合

  • トークンエンドポイントのリクエストの grant_type には urn:ietf:params:oauth:grant- type:jwt-bearer を指定する
  • 同じく assertion には JWT を 1 つ指定する。

クライアント認証で用いる場合

  • トークンエンドポイントのリクエストの client_assertion_type には urn:ietf:params:oauth:client-assertion-type:jwt-bearer を指定する
  • 同じく client_assertion には JWT を 1 つ指定する
yapooyapoo

アサーションで用いるJWT の形式について

Section 3 ではJWT に必要なクレームが記載されている。これ以外のクレームがあっても良い。

claim required description
iss true JWT の発行者。認可サーバーはこれが想定された値と一致することを確認する
sub true 認可グラントとして用いる場合はリソースオーナーなど[1]。クライアント認証として用いる場合は RP の client_id
aud true 認可サーバーを示す値を入れる。その認可サーバーのトークンエンドポイントの URL を入れても良い
exp true アサーションの失効日時。認可サーバーは失効判定の際に時刻ズレを考慮してもよいほか、あまりにも未来の日時が指定されている場合には失効していなくても reject してよい。
nbf false JWT が有効になる日時
iat false JWT の発行日時。あまりにも過去の日時が指定されている場合は reject してもよい
jti false JWT ID のこと。
脚注
  1. 仕様には the resource owner or an authorized delegate と書かれているが、authorized delegate というのはどういう場合なのかよくわからない ↩︎