Reactor API の秘密鍵
Reactor API では、秘密鍵は資格情報を表すリソースです。秘密鍵は、安全なデータ交換のために別のシステムに認証するために、イベント転送で使用されます。したがって、秘密鍵は、イベント転送プロパティ(platform
属性が edge
に設定されているプロパティ)内でのみ作成できます。
現在、type_of
属性で示されているサポートされている秘密鍵タイプは次の 3 つです。
token
simple-http
oauth2-client_credentials
このガイドでは、イベント転送で使用する秘密鍵の設定方法の概要を説明します。秘密鍵の構造の JSON の例など、Reactor API で秘密鍵を管理する方法のガイダンスについて詳しくは、 秘密鍵エンドポイントガイドを参照してください。
資格情報
各秘密鍵には、それぞれの資格情報の値を保持する credentials
属性が含まれます。API で秘密鍵を作成する場合、以下の節に示すように、秘密鍵のタイプごとに異なる必須属性があります。
token
token
type_of
の値が token
の秘密鍵には、credentials
の下に 1 つの属性のみが必要です。
token
トークンは静的な値として保存されるため、秘密鍵の作成時に秘密鍵の expires_at
および refresh_at
プロパティは null
に設定されます。
simple-http
simple-http
type_of
の値が simple-http
の秘密鍵には、credentials
の下に次の属性が必要です。
username
password
秘密鍵が作成されると、2 つの属性は username:password
の BASE64 エンコーディングで交換されます。交換後、秘密鍵の expires_at
および refresh_at
プロパティは null
に設定されます。
oauth2-client_credentials
oauth2-client_credentials
type_of
の値が oauth2-client_credentials
の秘密鍵には、credentials
の下に次の属性が必要です。
client_id
client_secret
token_url
refresh_offset
14400
(4 時間)に設定されます。options
(オプション) OAuth 統合の追加オプションを指定します。
scope
:資格情報の OAuth 2.0 スコープを表す文字列。audience
:Auth0 アクセストークンを表す文字列
oauth2-client_credentials
秘密鍵が作成または更新されると、OAuth プロトコルのクライアント資格情報フローに従って、client_id
と client_secret
(および場合によっては options
)が POST リクエストで token_url
に交換されます。
承認サービスが 200 OK
と JSON 応答本文で応答する場合、本文が解析され、access_token
がエッジ環境にプッシュされ、expires_in
を使用して秘密鍵の expires_at
属性と refresh_at
属性が計算されます。秘密鍵に環境の関連付けがない場合、 access_token
は破棄されます。
資格情報の交換は、次の条件下で成功したと見なされます。
expires_in
は28800
(8 時間)より大きい値です。refresh_offset
は、expires_in
から14400
を引いた値(4 時間)未満です。例えば、expires_in
が36000
(10 時間)で、refresh_offset
が28800
(8 時間)の場合、28800
は36000
-14400
(21600
)より大きいため交換は失敗したとみなされます。
正常に交換されると、秘密鍵のステータス属性が succeeded
に設定され、expires_at
と refresh_at
の値が設定されます。
expires_at
は、現在の UTC 時間にexpires_in
の値を加えたものです。refresh_at
は、現在の UTC 時間にexpires_in
の値を加え、refresh_offset
の値を引いたものです。例えば、expires_in
が43200
(12 時間)で、refresh_offset
が14400
(4 時間)の場合、refresh_at
プロパティは現在の UTC 時間から28800
(8 時間)に設定されます。
何らかの理由で交換が失敗した場合、meta
オブジェクトの status_details
属性が関連情報で更新されます。
oauth2-client_credentials
秘密鍵の更新
oauth2-client_credentials
秘密鍵が環境に割り当てられ、そのステータスが(資格情報が正常に交換された)succeeded
の場合、refresh_at
で新しい交換が自動的に実行されます。
交換が成功すると、meta
オブジェクトの refresh_status
属性が succeeded
に設定され、expires_at
、refresh_at
および activated_at
が更新されます。
交換が失敗した場合、操作はさらに 3 回試行され、最後の試行はアクセストークンの有効期限が切れる 2 時間前までに行われます。すべての試行が失敗した場合、meta
オブジェクトの refresh_status_details
属性が関連する詳細で更新されます。
oauth2-google
oauth2-google
type_of
の値が oauth2-google
の秘密鍵には、credentials
の下に次の属性が必要です。
scopes
認証用のGoogle製品スコープを一覧表示します。 次の範囲がサポートされています。
- Google広告:
https://www.googleapis.com/auth/adwords
- Google Pub/Sub:
https://www.googleapis.com/auth/pubsub
oauth2-google
秘密鍵を作成した後、応答には meta.authorization_url
プロパティが含まれます。 Google認証フローを完了するには、この URL をコピーしてブラウザーに貼り付ける必要があります。
oauth2-google
秘密鍵の再認証
oauth2-google
秘密鍵の認証 URL は、秘密鍵が作成されてから 1 時間が経過すると有効期限が切れます(meta.authorization_url_expires_at
で示されます)。 この期間を過ぎると、認証プロセスを更新するために秘密鍵の再認証を行う必要があります。
Reactor API に対して認証リクエストを行うことで oauth2-google
秘密鍵を再PATCHする方法について詳しくは、 秘密鍵エンドポイントガイドを参照してください。
環境の関係
秘密鍵を作成するときは、秘密鍵が存在する環境を指定する必要があります。秘密鍵は、作成された環境に直ちにデプロイされます。
秘密鍵は、1 つの環境にのみ関連付けることができます。秘密鍵と環境の関係が確立されると、秘密鍵を環境からクリアすることはできず、秘密鍵を別の環境に関連付けることもできません。
秘密鍵の資格情報が正常に交換された後、秘密鍵を環境に関連付けるには、交換アーティファクト(token
トークン文字列、simple-http
の Base64 エンコード文字列または oauth2-client_credentials
のアクセストークン)を、環境に安全に保存します。
交換アーティファクトが環境に正常に保存されると、秘密鍵の activated_at
属性が現在の UTC 時間に設定され、データ要素を使用して参照できるようになります。秘密鍵の参照について詳しくは、次の節を参照してください。
秘密鍵の参照 referencing-secrets
秘密鍵を参照するには、イベント転送プロパティに「秘密鍵」タイプのデータ要素(コア拡張機能によって提供される)を作成する必要があります。このデータ要素を設定する際に、各環境で使用する秘密鍵を指定するよう求められます。その後、HTTP 呼び出しのヘッダー内など、秘密鍵のデータ要素を参照するルールを作成できます。
succeeded
秘密鍵が 1 つ以上必要です。例えば、ライブラリの秘密鍵データ要素に、ステージング秘密鍵セクション用に設定された succeeded
秘密鍵がないものがある場合、ステージング環境でそのライブラリをビルドしようとすると、エラーが発生します。実行時、秘密鍵データ要素は、環境に保存されている対応する秘密鍵交換アーティファクトに置き換えられます。
次の手順
このガイドでは、Reactor API で秘密鍵を操作するための基本について説明しました。API 呼び出しを使用して秘密鍵を管理する方法について詳しくは、秘密鍵エンドポイントガイドを参照してください。