マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

構成要素

JOSEヘッダ

JWSの基本的なヘッダには、以下のものがある。

RS256

秘密鍵で検証可能なHS256(HMAC using SHA-256 hash)

{
  "alg": "HS256",
  "typ": "JWT"
}

HS256

公開鍵で検証可能なRS256(RSA using SHA-256 hash)

{
  "alg": "RS256",
  "typ": "JWT"
}

ES256

公開鍵で検証可能なES256(ECDSA using P-256 and SHA-256)

{
  "alg": "ES256",
  "typ": "JWT"
}

JWKをサポートする場合

jwkや、kid & jkuなどのパラメタを追加する。

JWSペイロード(クレームセット)

JWS署名

詳細

表現(エンコード)

JWS Compact Serialization

※ 殆どの場合、こちらが使用されている。

JWS JSON Serialization

あまり市民権を獲得しているようには思えない表現(エンコード)。

アルゴリズム

認証系であれば公開鍵暗号化方式のRS256(RSA using SHA-256 hash)が良い。

RS256

公開鍵暗号方式である、alg=RS256(RSA-SHA256)による署名を行う。

HS256

キー付きハッシュである、alg=HS256(HMAC-SHA256)によるMAC付与

ES256

公開鍵暗号方式である、alg=ES256(ECDSA using P-256 and SHA-256)による署名を行う。

手順

作成

検証

検証サイト

下記参照

自作ライブラリ

署名・暗号化アルゴリズム

ココの署名・暗号化アルゴリズムを使用すると良い。

KeyedHashAlgorithm?

AsymmetricAlgorithm?

参考サイト

以下が参考になる。

ココを見ると、

これで、実際にGoogle側での検証ができている。

検証サイト

上記のように、RFCを正確に理解していないとJWTライブラリ作成は難しいが、
JSON Web Tokens - jwt.ioなどの検証サイトを使用して検証できれば、及第点に達していると言える。

以下のように検証できる。

手順

  1. 左ペイン(Encoded)にJWTの文字列を貼り付ける。
  2. すると、入力したJWTから、ペイン(Dencoded)のHeader、Payloadに自動的に表示がなされる。
  3. 次に、上部 ALGORITHM selectbox から、Headerに表示された"alg"と同じアルゴリズムを選択する。
  4. 最後に、VERIFY SIGNATUREに、署名の検証に使用するキーを入力する(HS256の場合RS256の場合で異なる)。

HS256の場合

HS256は非常に単純で、署名に使用したキーのBase64(Base64Url)表現を指定する。

HS256

RS256の場合

RS256は署名に使用した秘密鍵に対応する公開鍵を指定する。
私は、X.509証明書を利用したので、OpenSSLで公開鍵を取得して、それを貼り付けた所、検証ができた。

ポイントは、

と、ヘッダ・フッタ部分も貼り付ける必要がある所だろうか。

RS256

Open棟梁

参考

JWA - JWS用

暗号化アルゴリズム

.NETの署名・暗号化アルゴリズム


Tags: :認証基盤, :クレームベース認証, :暗号化


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