メソッド: delegate

この呼び出しは、新しい認証 JSON Web Token(JWT)を返します。これにより、エンティティは元の認証 JWT で認証されたユーザーに代わって、指定されたリソースにアクセスできます。これは、ユーザーの代わりに別のエンティティが動作する必要がある場合に、ラップまたはアンラップへのスコープ付きアクセスを別のエンティティに委任するために使用されます。

HTTP リクエスト

POST https://<base_url>/delegate

<base_url> は、Key Access Control List Service(KACLS)の URL に置き換えます。

パスパラメータ

なし。

リクエストの本文

リクエストの本文には、リクエストの JSON 表現が含まれています。

JSON 表現
{
  "authentication": string,
  "authorization": string,
  "reason": string
}
フィールド
authentication

string

ユーザーが誰であるかをアサートするサードパーティによって発行された JWT。詳しくは、認証のセクションをご覧ください。

authorization

string

delegated_to クレームで識別されるエンティティがユーザーに代わって resource_name にアクセスできることを表明する delegated_to クレームと resource_name クレームを含む JWT。詳細については、認証トークンをご覧ください。

reason

string (UTF-8)

オペレーションに関する追加のコンテキストを提供するパススルー JSON 文字列。提供された JSON は、表示する前にサニタイズする必要があります。最大サイズ: 1 KB。

必要な処理手順

KACLS は、少なくとも次の手順を実行する必要があります。

  • 認可トークンと認証トークンの両方を検証します。詳細については、認可トークン認証トークンをご覧ください。
  • 認可トークンと認証トークンが同じユーザーのものであることを確認します。詳細については、データの暗号化と復号をご覧ください。
  • 認可トークンの kacls_url クレームが現在の KACLS URL と一致することを確認します。これにより、内部関係者や不正なドメイン管理者によって構成された潜在的な中間者サーバーを検出できます。
  • 認証トークンに kacls_owner_domain クレームが存在する場合は、値が KACLS 所有者の Google Workspace ドメインと一致することを確認します。これにより、権限のないユーザーが KACLS を Google に登録することを防ぐことができます。
  • オペレーションをログに記録します。これには、オペレーションを開始したユーザー、delegated_toresource_name、リクエストで渡された理由が含まれます。
  • 認可トークンから delegated_toresource_name のクレームを含む JWT トークンを生成、署名して返します。

KACLS は、JWT クレームに基づくものなど、追加のセキュリティ チェックを自由に行うことができます。

レスポンスの本文

成功すると、このメソッドは delegated_to クレームと resource_name クレームを含む認証 JWT を返します。このトークンは、後で Wrap メソッドと Unwrap メソッドの呼び出しで認証に使用できます。エラーが発生した場合は、構造化されたエラー応答を返す必要があります。

JSON 表現
{
  "delegated_authentication": string
}
フィールド
delegated_authentication

string

元の認証 JWT で言及されているユーザーが resource_name にアクセスするために有効な委任認証 JWT。詳細については、delegate の KACLS 認証トークンをご覧ください。

リクエスト

POST https://mykacls.example.com/v1/delegate
{
  "authentication": "eyJhbGciOi...",
  "authorization": "eyJhbGciOi...delegated_to\":\"other_entity_id\",\"resource_name\":\"meeting_id\"...}",
  "reason": "{client:'meet' op:'delegate_access'}"
}

レスポンス

{
  "delegated_authentication": "eyJhbGciOi...delegated_to_from_authz_token...resource_name_from_authz_token...}"
}