OAuth2.0 アクセストークンを取得する
D1 API は OAuth 2.0 JWT ベアラーフロー(RFC 7523).
あなたの イシュアバックエンド は JSON Web Token (JWT) に署名し、それを D1 アクセストークンと交換します。
D1 アクセストークンを使用して D1 API を呼び出します。
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 は、ドット(.):
ヘッダー
ペイロード
署名
例: 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.
ペイロードの例:
署名
署名は、Base64URLでエンコードされたヘッダーとペイロードに対して計算されます。
3つの JWT 部分はドット(.).
鍵ペアを生成します
OpenSSL を使用して P-256 鍵ペアを生成します:
イシュア側のバックエンド用の秘密鍵を生成します。
環境内で安全に保管してください。
D1 バックエンドに配置する公開鍵を生成します:
イシュア側のバックエンドは、JWT に署名するために秘密鍵を使用します。
D1 バックエンドは公開鍵(およびその kid)JWT署名を検証するために。
公開鍵を共有し、 kid D1オンボーディング中にThalesのデリバリーチームとともに。
JWTを生成する
JWTを生成する方法はたくさんあります。
この例では次を使用します: jose Node.jsライブラリ:
JWT出力例:
最終更新
役に立ちましたか?