「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
詳細 †
共通 †
共通鍵暗号化方式 †
client_secret の UTF-8 オクテットを使用する。
公開鍵暗号化方式 †
署名 †
共通鍵暗号化方式 †
- MACベースの署名
- JWSヘッダに alg パラメタ値を設定
- MAC 鍵は、アルゴリズムの最低限のオクテット長を持つ必要がある。
- 例えばHS256では, 最低でも32オクテットが必要になる。
- アルファベットに限定される場合、それ以上のオクテットが必要となる。
公開鍵暗号化方式 †
- RSAおよびECDSA署名
- JWSヘッダに alg パラメタ値を設定
暗号化 †
共通鍵暗号化方式 †
- ハッシュ・アルゴリズムは、以下を用いる。
- 256ビット以下の鍵には SHA-256
- 257-384ビットの鍵には SHA-384
- 385-512ビットの鍵には SHA-512
- A128KW
SHA-256ハッシュを切り詰めて128ビットを取り出す。
- 512ビット以上の鍵が必要になった場合
client_secretから鍵を導出する何らかの拡張仕様を定義する。
公開鍵暗号化方式 †
- RSA
ランダムな Content Encryption Key によってJWSをRSA暗号化アルゴリズムで暗号化する。
- Elliptic Curve
- JWEヘッダの epk に指定する短命な Elliptic Curve公開鍵を生成する。
- ECDH-ES アルゴリズムを用いContent Encryption Keyの鍵を交換し、JWSを暗号化する。
鍵のローテーション †
- jwks_uri + JWK Set + kidでローテーションする。
- Cache-Control ヘッダに max-age を含めJWK Setのキャッシュを適切にコントロールする。
署名 †
署名者がローテーションを行う。
- 検証者は、
- jwks_uriで指定した場所からJWK Setを取得する。
- JWSヘッダの kid から署名に使用した公開鍵を、上記のJWK Set中から取得する。
- 取得した公開鍵を使用して署名の検証を行う。
暗号化 †
複合化を行う主体がローテーションを行う。
(古い鍵が使用される可能性があるため、鍵を暫く保持する)。
- 複合化を行う主体は、
- JWEヘッダの kid から暗号化に使用した秘密鍵を、上記のJWK Set中から取得する。
- 取得した秘密鍵を使用して複合化を行う。
参考 †
Tags: :認証基盤, :クレームベース認証, :OAuth