In diesem Abschnitt wird erläutert, wie Sie für Google Chat-Apps, die auf HTTP-Endpunkten basieren, prüfen können, ob die Anfragen an Ihren Endpunkt von Chat stammen.
Um Interaktionsereignisse an den Endpunkt Ihrer Chat-App zu senden, stellt Google Anfragen an Ihren Dienst. Damit Sie prüfen können, ob die Anfrage von Google stammt, fügt Chat in den Authorization Header jeder HTTPS-Anfrage an Ihren Endpunkt ein
Bearer-Token
ein. Beispiel:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Die String AbCdEf123456 im vorherigen Beispiel ist das Bearer-Autorisierungstoken. Dies ist ein von Google erstelltes kryptografisches Token. Der Typ des Bearer
Tokens und der Wert des audience Felds hängen vom Typ der Authentifizierungs
Zielgruppe ab, die Sie beim
Konfigurieren der Chat-App ausgewählt haben.
Wenn Sie Ihre Chat-App mit Cloud Run-Funktionen implementiert haben, übernimmt Cloud IAM die Tokenprüfung automatisch. Sie müssen das Google Chat-Dienstkonto als autorisierten Aufrufer hinzufügen. Wenn Ihre App einen eigenen HTTP-Server implementiert, können Sie Ihr Bearer-Token mit einer Open-Source-Google API-Clientbibliothek prüfen:
- 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
Wenn das Token für die Chat-App nicht geprüft werden kann, sollte Ihr Dienst mit dem HTTPS-Antwortcode 401 (Unauthorized) auf die Anfrage antworten.
Anfragen mit Cloud Run-Funktionen authentifizieren
Anschließend müssen Sie das Google Chat-Dienstkonto chat@system.gserviceaccount.com als Aufrufer autorisieren. Gehen Sie dazu so vor:
Console
Nachdem Sie Ihre Funktion oder Ihren Dienst in Google Cloud bereitgestellt haben, gehen Sie so vor:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.
Klicken Sie in der Liste der Cloud Run-Dienste auf das Kästchen neben der empfangenden Funktion. (Klicken Sie nicht auf die Funktion selbst.)
Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie im Feld Neue Hauptkonten
chat@system.gserviceaccount.comein.Wählen Sie im Menü Rolle auswählen die Rolle Cloud Run
Cloud Run-Aufrufer aus.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie den Befehl gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'Ersetzen Sie RECEIVING_FUNCTION durch den Namen der Funktion Ihrer Chat-App.
HTTP-Anfragen mit einem ID-Token authentifizieren
Wenn das Feld Authentifizierungszielgruppe der Einstellung für die Chat-App-Verbindung auf HTTP-Endpunkt-URL festgelegt ist, ist das Bearer-Autorisierungstoken in der Anfrage ein von Google signiertes OpenID Connect-ID-Token (OIDC).
Das Feld email ist auf chat@system.gserviceaccount.com festgelegt. Das Feld Authentifizierungszielgruppe ist auf die URL festgelegt, die Sie für Google Chat konfiguriert haben, um Anfragen an Ihre Chat-App zu senden. Wenn der konfigurierte Endpunkt Ihrer Chat-App beispielsweise https://example.com/app/ ist, ist das Feld Authentifizierungszielgruppe im ID-Token https://example.com/app/.
Dies ist die empfohlene Authentifizierungsmethode, wenn Ihr HTTP-Endpunkt nicht auf einem Dienst gehostet wird, der IAM-basierte Authentifizierung unterstützt (z. B. Cloud Run). Bei dieser Methode benötigt Ihr HTTP-Dienst Informationen zur URL des Endpunkts, auf dem er ausgeführt wird, aber keine Informationen zur Cloud-Projektnummer.
In den folgenden Beispielen wird gezeigt, wie Sie mit der Google OAuth-Clientbibliothek prüfen können, ob das Bearer-Token von Google Chat ausgestellt und auf Ihre App ausgerichtet wurde.
Java
Python
Node.js
Anfragen mit einem JWT für die Projektnummer authentifizieren
Wenn das Feld **Authentifizierungszielgruppe** der Einstellung für die Chat-App-Verbindung
auf Project
Number festgelegt ist, ist das Bearer-Autorisierungstoken in der Anfrage ein selbstsigniertes
JSON Web Token (JWT),
das von chat@system.gserviceaccount.com ausgestellt und signiert wurde.
Das Feld audience ist auf die Google Cloud-Projektnummer festgelegt, die Sie zum Erstellen Ihrer Chat-App verwendet haben. Wenn die Cloud-Projektnummer Ihrer Chat-App beispielsweise 1234567890 ist, ist das Feld audience im JWT 1234567890.
Diese Authentifizierungsmethode wird nur empfohlen, wenn Sie Anfragen lieber mit der Cloud-Projektnummer als mit der HTTP-Endpunkt-URL prüfen möchten. Das ist beispielsweise der Fall, wenn Sie die Endpunkt-URL im Laufe der Zeit ändern möchten, aber dieselbe Cloud-Projektnummer beibehalten möchten, oder wenn Sie denselben Endpunkt für mehrere Cloud-Projektnummern verwenden und das Feld audience mit einer Liste von Cloud-Projektnummern vergleichen möchten.
In den folgenden Beispielen wird gezeigt, wie Sie mit der Google OAuth-Clientbibliothek prüfen können, ob das Bearer-Token von Google Chat ausgestellt und auf Ihr Projekt ausgerichtet wurde.
Java
Python
Node.js
Weitere Informationen
- Eine Übersicht über die Authentifizierung und Autorisierung in Google Workspace finden Sie unter Authentifizierung und Autorisierung.
- Eine Übersicht über die Authentifizierung und Autorisierung in Chat finden Sie unter siehe Authentifizierung.
- Authentifizierung und Autorisierung mit Nutzeranmeldedaten oder einem Dienstkontoeinrichten.