このセクションでは、HTTP エンドポイント上に構築された Google Chat アプリに対して、 エンドポイントへのリクエストが Chat から送信されたものであることを確認できます。
インタラクション イベントを Chat アプリの
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] フィールドで App URL
を選択する必要があります。
Chat アプリ
接続設定を確認し、
構成内のアプリの 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 アプリの機能。
アプリ URL ID トークンを使用してリクエストを認証する
Chat アプリの [Authentication Audience] フィールドが
接続設定が App URL
に設定されている
リクエスト内の署名なし認証トークンが Google によって署名された OpenID Connect
(OIDC)ID トークン。
email
フィールドが chat@system.gserviceaccount.com
に設定されている。
[audience
] 欄には、Google Chat で送信するように設定した URL が設定されます
送信することもできます。たとえば、
アプリケーションの構成済みエンドポイントが
https://example.com/app/
の場合、ID トークンの audience
フィールドは次のようになります。
https://example.com/app/
。
次のサンプルは、署名なしトークンが発行されたことを確認する方法を示しています。 Google Chat を作成し、Google OAuth クライアント ライブラリを使用してアプリをターゲットにします。
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 での認証と認可の概要については、 認証の概要。
- 認証と認可を設定する ユーザー認証情報 または サービス アカウント。