0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens メモ

Posted at
  • JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens draft-ietf-oauth-access-token-jwt-13(JWT形式のアクセストークンに関する仕様)の個人用メモ
  • アクセストークンをJWT形式にすることで、アクセストークンに紐付く情報をアクセストークンの中に埋め込む方法。

アクセストークン データ構造

  • 偽造検知のため、生成データに署名を含め、利用時に検証する。

ヘッダー部

  • 署名検証を行うために必要な情報を格納する
パラメータ 必須 説明
typ トークン形式としてat+jwtを指定する。
alg 署名に使用するアルゴリズムを指定する。noneは指定しないこと。
kid 鍵識別子。

ペイロード/クレーム部

パラメータ 必須 説明
iss JWT発行者
exp JWT有効期限
aud JWTを受け取るクライアント識別子 認可リクエストにresource パラメータが指定された場合、audクレームにはresourceパラメータと同じ値が指定される
sub リソースオーナー識別子
client_id クライアントID
iat JWT発行時刻
jti JWTを一意に識別するための識別子
scope 認可範囲

その他にもあり

認可リクエスト/JWTアクセストークン例

  • 認可リクエスト

    GET /as/authorization.oauth2?response_type=code
    &client_id=s6BhdRkqt3
    &state=xyz
    &scope=openid%20profile%20reademail
    &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
    &resource=https%3A%2F%2Frs.example.com%2F HTTP/1.1
    Host: authorization-server.example.com
    
  • JWTアクセストークンのヘッダー部とクレーム部

    • ヘッダー部

      {
          "typ":"at+JWT",
          "alg":"RS256",
          "kid":"RjEwOwOA"
      }
      
    • クレーム部

      {
      	"iss": "https://authorization-server.example.com/",
          "sub": "5ba552d67",
          "aud":   "https://rs.example.com/",
          "exp": 1639528912,
          "iat": 1618354090,
          "jti" : "dbe39bf3a3ba4238a513f51d6e1691c4",
          "client_id": "s6BhdRkqt3",
          "scope": "openid profile reademail"
      }
      

アクセストークン検証

  • リソースサーバーは、偽造されていないことを検証してから、アクセストークンに埋め込まれている情報を利用する。

流れ

  1. typヘッダーパラメータがat+jwtもしくはapplication/at+jwtであることを確認する。
  2. JWTアクセストークンが暗号化されている場合は、登録時にリソースサーバーが指定したキーとアルゴリズムを使用して復号化する。
  3. issクレームを参照し、認可サーバー識別子と一致していることを確認する。
  4. audクレームがリソースサーバー識別子と一致していること確認する。
  5. algヘッダーパラメータに指定されているアルゴリズムを使用し、署名を検証する。
  6. expクレームが現在時刻よりも未来日時であることを確認する。

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?