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

目次

概要

セキュリティ拡張仕様(RFC 9449 として標準化)

特徴

OAuth2.0 mTLSToken BindingもTLSに依存した設計となっている。
※ ただし、後者はブラウザ・サポートによりインフラ構築不要になる予定だったが、実現せずに、廃案と成った。

課題

秘密鍵を何処に保存すりゃいいのか?などの説明が不足している(明示的な規定を避けている)が、
一般的な回答としては、エクスポート不可のWeb Crypto API(extractable: false)でインメモリ生成するのが推奨。

詳細

クライアントが公開鍵・秘密鍵ペアを生成

Client generates:

プラットフォーム毎のAPI

Web Crypto API(extractable: false)

Tokenリクエスト時に DPoP Proof JWT を送信

クライアントは Authorization Server に以下を送る。

DPoP HTTPヘッダを入れる。

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&...

DPoP Proof JWT の構造:

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 (秘密鍵で署名)

Authorization Server がトークンを発行

Resource Serverへのリクエスト

毎回 新しい DPoP Proof JWT を生成

GET /resource HTTP/1.1
Authorization: DPoP eyJhbGciOi...   ← Bearer ではなく DPoP スキーム
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIs...  ← Proof JWT

Resource Serverが検証

参考


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


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