OAuth2.0 アクセストークンを取得する
D1 API は OAuth 2.0 JWT ベアラーフロー(RFC 7523).
あなたの イシュアのバックエンド は JSON Web トークン(JWT)に署名し、それを D1 アクセストークンと交換します。
D1 API を呼び出すには D1 アクセストークンを使用してください。

リクエストおよびレスポンスフィールドは API リファレンスを参照してください: 認可トークンを取得.
D1 アクセストークンの使用
イシュアのバックエンドから D1 バックエンドへのすべての API は D1 アクセストークンを必要とします。
それを Authorization ヘッダーに次のように送信してください Bearer スキーム:
Authorization: Bearer <Base64_Encoded_JWT>
D1 アクセストークンの有効期限は 15 分です。
有効期限が切れるまでトークンを再利用してください。
毎回呼び出さないでください /oauth2/token 各 D1 API 呼び出しの前に。
JWT アサーション
が、 /oauth2/token API は JWT アサーション(RFC 7519).
イシュアのバックエンドは有効な JWT を生成して署名する必要があります。
次のことができます:
ID プロバイダ(例:Keycloak)を使用して JWT を生成する。
イシュアのバックエンドで JWT を生成する。
どちらの場合でも、署名検証に使用する公開鍵を D1 バックエンドにプロビジョニングしてください。
ID プロバイダを使用しない場合は、以下に記載のとおり鍵ペアと JWT を生成してください。
サポートされるアルゴリズム
次のみ署名された JWT がサポートされます: ES256 (がサポートされます)RFC 7518).
D1 は非対称暗号を使用します。
D1 バックエンドは公開鍵のみを保存します。
JWT の形式
JWT はドットで区切られた 3 つの部分で構成されます(.):
ヘッダー
ペイロード
署名
例: hhhhhhh.pppppppp.ssssssssss
ヘッダー
ヘッダーにはアルゴリズムとトークンタイプが含まれます。
kid は必須です。
D1 バックエンドはこれを使用して正しい公開鍵を選択します。
ヘッダー例:
ペイロード
ペイロードは以下のクレームをサポートします:
iss
文字列
はい
D1 オンボーディング中に提供された issuerId を使用してください。D1 はそれを使用してプロビジョニングされた公開鍵を照会します。アグリゲーター モデルを使用する場合は、これを aggregatorId に設定してください。
sub
文字列
はい
issuerId を使用してください。(アグリゲーターの場合、この値は aggregatorId と等しくなります。)
exp
整数
はい
UTC エポック秒での有効期限。最大値は現在時刻 + 15 分です。
aud
文字列
いいえ
D1 認可サーバーのベース URL。ターゲット環境の URL を使用してください:Sandbox = https://api.d1-stg.thalescloud.io、本番 = https://api.d1.thalescloud.io.
D1 は最大有効期間を強制します。もし exp 許可されたウィンドウを超えると、D1 はリクエストを拒否します。
ペイロード例:
署名
署名は Base64URL エンコードされたヘッダーとペイロードに対して計算されます。
3 つの JWT 部分はドットで結合されます(.).
鍵ペアを生成する
OpenSSL を使用して P-256 鍵ペアを生成します:
イシュアのバックエンド用の秘密鍵を生成します。
環境内でそれを保護してください。
D1 バックエンドにプロビジョニングする公開鍵を生成します:
イシュアのバックエンドは秘密鍵を使って JWT に署名します。
D1 バックエンドは公開鍵(およびその kid)を使用して JWT 署名を検証します。
公開鍵と kid を D1 オンボーディング中に Thales のデリバリーチームと共有してください。
JWT を生成する
JWT を生成する方法はいくつもあります。
この例では jose Node.js ライブラリを使用します:
JWT の出力例:
最終更新
役に立ちましたか?