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

目次

概要

以下の内容で最終確認済み。
https://tools.ietf.org/html/rfc7515

構成要素

JOSEヘッダ

JWSの基本的なヘッダ(≒JWS Compact Serializationの場合の保護ヘッダ)には、以下のものがある。

ヘッダの例

追加のパラメタ

TLS要件

"jku" and / or "x5u"ヘッダパラメタをサポートする実装は、TLSが必要。

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

署名

詳細

表現(エンコード)

JWS Compact Serialization

多くの場合は、この表現(エンコード)。

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

JWS JSON Serialization

保護ヘッダ・非保護ヘッダ

JOSEヘッダは、以下のメンバの和集合。

保護ヘッダ

MACや署名によって完全性が保護されているヘッダ・パラメタを含むJSONオブジェクト。

非保護ヘッダ

アルゴリズム

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

HS256

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

RS256

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

ES256

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

JWAを確認

手順

作成

JWS Compact Serializationの場合

JWS JSON Serializationの場合

JWS Compact Serializationとの差異は以下。

検証

JWS Compact Serializationの場合

JWS JSON Serializationの場合

JWS Compact Serializationとの差異は以下。

検証サイト

下記参照

具体例

HS256

https://tools.ietf.org/html/rfc7515#appendix-A.1

RS256

https://tools.ietf.org/html/rfc7515#appendix-A.2

ES256

https://tools.ietf.org/html/rfc7515#appendix-A.3

セキュリティに関する考慮事項

鍵エントロピー

すべての鍵に最低128ビットのエントロピーを使用する必要がある。
コンテキスト次第で、さらに多くのエントロピーが必要になる可能性がある。

ランダム値

鍵の識別

仕様の外だが、以下を使用できる。

JOSEヘッダ中のJWK

JOSEヘッダ中の証明書

鍵の保護、発信元認証

MAC

署名

署名とMACの違い

MAC

※ HS256はプレーンなHMACでMACではない(ややこしい)。

署名

暗号の敏捷性

JWAを参照

自作ライブラリ

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

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

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棟梁

参考

jose-jwt(ライブラリ)

暗号化アルゴリズム

JWA - JWS用

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


Tags: :IT国際標準, :認証基盤, :クレームベース認証, :暗号化


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