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

目次

概要

構成要素

ヘッダ

JWSの基本的なヘッダには、

などがある。

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

署名

詳細

ヘッダペイロード(クレームセット)署名を以下のように表現(エンコード)したもの。

表現(エンコード)

以下の2つの表現(エンコード)方法がある。

JWS Compact Serialization

JWS JSON Serialization

アルゴリズム

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

RS256

alg=RS256(RSA-SHA256)による署名を行う。

HS256

alg=HS256(HMAC-SHA256)によるMAC付与

手順

作成

検証

検証サイト

下記参照

自作ライブラリ

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

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

KeyedHashAlgorithm?

AsymmetricAlgorithm?

参考サイト

ちなみに、

は、

が記載されていない。

また、

は、いくつか誤りがあるようで、RS256は、HMACSHA256ではない。

故に、(実際にGoogle側での検証ができているので)こちらのほうが参考になる。

ココを見ると、

これで、実際に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棟梁

参考


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


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