「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
セキュリティ拡張仕様(RFC 9449 として標準化)
※ OAuth2.0 mTLS も Token BindingもTLSに依存した設計となっている。
※ ただし、後者はブラウザ・サポートによりインフラ構築不要になる予定だったが、実現せずに、廃案と成った。
秘密鍵を何処に保存すりゃいいのか?などの説明が不足している(明示的な規定を避けている)が、
一般的な回答としては、エクスポート不可のWeb Crypto API(extractable: false)でインメモリ生成するのが推奨。
Web Crypto API(extractable: false)
クライアントは Authorization Server に以下を送る。
POST /token HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJodG0iOiJQT1NUIiwiaHR1IjoiaHR0cHM6Ly9zZXJ2ZXIuZXhhbXBsZS5jb20vdG9rZW4iLCJpYXQiOjE2MjM0MjA4MDAsImp0aSI6InVuaXF1ZS1pZCJ9.signature grant_type=authorization_code&code=xxxxx&...
json// Header
{
"typ": "dpop+jwt",
"alg": "ES256",
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "...",
"y": "..."
}
}
// Payload
{
"htm": "POST", // HTTPメソッド
"htu": "https://server.example.com/token", // エンドポイントURL
"iat": 1623420800, // 発行時刻(リプレイ攻撃対策)
"jti": "unique-id" // 一意なID(リプレイ攻撃対策)
}
// Signature (秘密鍵で署名)
// アクセストークン(JWT)のペイロードに含まれる
{
"sub": "user123",
"cnf": {
"jkt": "0ZcO...(公開鍵のSHA-256ハッシュ)"
}
}毎回 新しい DPoP Proof JWT を生成
GET /resource HTTP/1.1 Authorization: DPoP eyJhbGciOi... ← Bearer ではなく DPoP スキーム DPoP: eyJ0eXAiOiJkcG9wK2p3dCIs... ← Proof JWT
Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth