このセクションでは、HTTP エンドポイント上に構築された Google Chat アプリに対して、 エンドポイントへのリクエストが Chat から送信されたものであることを確認できます。
インタラクション イベントを Chat アプリの
Google がサービスにリクエストを送信します。リクエストが Google から送信されたことを確認するため、Chat では、エンドポイントへのすべての HTTPS リクエストの Authorization
ヘッダーにベアラ トークンが含まれています。次に例を示します。
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
上記の例の文字列 AbCdEf123456
は、署名なし認証です。
あります。これは Google が生成する暗号トークンです。ベアラ トークンのタイプと audience
フィールドの値は、Chat アプリの構成時に選択した認証オーディエンスのタイプによって異なります。
Cloud NAT を使用して Chat 用アプリを実装している場合は、 Cloud IAM では、トークンの検証が自動的に処理されます。承認済み呼び出し元として Google Chat サービス アカウントを追加するだけです。アプリに独自の HTTP サーバーを実装している場合は、署名なしトークンを検証できます。 オープンソースの Google API クライアント ライブラリを使用します。
- Java: https://github.com/google/google-api-java-client
- Python: https://github.com/google/google-api-python-client
- Node.js: https://github.com/google/google-api-nodejs-client
- .NET: https://github.com/google/google-api-dotnet-client
トークンが Chat アプリの確認に合格しなかった場合、サービスは HTTPS レスポンス コード 401 (Unauthorized)
でリクエストに応答する必要があります。
Cloud Functions または Cloud Run を使用してリクエストを認証する
関数のロジックを Cloud Functions または Cloud Run を使用して実装する場合は、 [Authentication Audience] フィールドで HTTP エンドポイント URL を選択する必要があります。 Chat アプリ 接続設定を変更して、 構成内の HTTP エンドポイント URL は、Cloud Functions の関数または Cloud Run エンドポイントです。
次に、Google Chat サービス アカウントを認証します。
起動元としての chat@system.gserviceaccount.com
。
次の手順は、Cloud Functions(第 1 世代)を使用する方法を示しています。
Console
関数を Google Cloud にデプロイした後:
Google Cloud コンソールで、[Cloud Functions] ページに移動します。
[Cloud Functions] リストで、受信側 使用します。(関数自体はクリックしないでください)。
画面の上部の [権限] をクリックします。[権限] パネルが開きます。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに「
chat@system.gserviceaccount.com
」と入力します。[ロールを選択] プルダウン メニューから、[Cloud Functions] > [Cloud Functions 起動元] ロールを選択します。
[保存] をクリックします。
gcloud
gcloud functions add-iam-policy-binding
コマンドを使用します。
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
RECEIVING_FUNCTION
は、使用するプロジェクトの名前で置き換えます。
Chat アプリの機能。
次の手順は、Cloud Functions(第 2 世代)または Cloud Run サービスを使用する方法を示しています。
Console
関数またはサービスを Google Cloud にデプロイした後:
Google Cloud コンソールで [Cloud Run] ページに移動します。
Cloud Run サービスリストで、受信側関数の横にあるチェックボックスをオンにします(関数自体はクリックしないでください)。
画面の上部の [権限] をクリックします。[権限] パネルが開きます。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに「
chat@system.gserviceaccount.com
」と入力します。ロール [Cloud Run] を選択 >Cloud Run 起動元 [ロールを選択] プルダウン メニュー。
[保存] をクリックします。
gcloud
gcloud functions add-invoker-policy-binding
コマンドを使用します。
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'
RECEIVING_FUNCTION
は、Chat アプリの関数の名前に置き換えます。
ID トークンを使用して HTTP リクエストを認証する
Chat アプリの接続設定の認証オーディエンス フィールドが HTTP エンドポイント URL に設定されている場合、リクエスト内のベアラ認可トークンは、Google 署名付きの OpenID Connect(OIDC)ID トークンです。email
フィールドが chat@system.gserviceaccount.com
に設定されている。
[Authentication Audience] フィールドは、構成した URL に設定されます。
Chat 用アプリにリクエストを送信できます。
たとえば、構成済みのエンドポイントが
Chat 用アプリが https://example.com/app/
の場合、
ID トークンの [Authentication Audience] フィールドは https://example.com/app/
です。
次のサンプルは、Google OAuth クライアント ライブラリを使用して、ベアラ トークンが Google Chat によって発行され、アプリを対象としていることを検証する方法を示しています。
Java
Python
Node.js
プロジェクト番号 JWT を使用してリクエストを認証する
Chat アプリの [Authentication Audience] フィールドが
接続設定が Project
Number
に設定されている場合、リクエスト内の署名なし認証トークンは自己署名トークンです。
JSON Web Token(JWT)
chat@system.gserviceaccount.com
によって発行され、署名されました。
audience
フィールドは、使用した Google Cloud プロジェクト番号に設定されます。
Chat 用アプリをビルドできます。たとえば、
Chat アプリの Cloud プロジェクト番号:
1234567890
の場合、JWT の audience
フィールドは 1234567890
です。
次のサンプルは、署名なしトークンが発行されたことを確認する方法を示しています。 Google Chat を作成し、Google OAuth クライアント ライブラリを使用してプロジェクトをターゲットに設定します。
Java
Python
Node.js
関連トピック
- Google Workspace での認証と認可の概要については、 認証と認可について学習する。
- Chat での認証と認可の概要については、 認証の概要。
- 認証と認可を設定する ユーザー認証情報 または サービス アカウント。