In diesem Abschnitt wird beschrieben, wie Sie bei Google Chat-Apps, die auf HTTP-Endpunkten basieren, prüfen, ob die Anfragen an Ihren Endpunkt von Google Chat stammen.
Um Interaktionsereignisse an den Endpunkt Ihrer Chat-App zu senden, sendet Google Anfragen an Ihren Dienst. Um zu prüfen, ob die Anfrage von Google stammt, enthält Chat in jeder HTTPS-Anfrage an Ihren Endpunkt im Authorization
-Header ein Bearer-Token. Beispiel:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Der String AbCdEf123456
im vorherigen Beispiel ist das Bearer-Autorisierungstoken. Dies ist ein kryptografisches Token, das von Google erstellt wird. Der Typ des Bearer-Tokens und der Wert des Felds audience
hängen davon ab, welche Art von Authentifizierungszielgruppe Sie bei der Konfiguration der Chat-App ausgewählt haben.
Wenn Sie Ihre Chat-App mit Cloud Functions oder Cloud Run implementiert haben, wird die Tokenbestätigung automatisch von Cloud IAM durchgeführt. Sie müssen nur 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 überprü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 bestätigt wird, sollte Ihr Dienst auf die Anfrage mit dem HTTPS-Antwortcode 401 (Unauthorized)
antworten.
Anfragen mit Cloud Functions oder Cloud Run authentifizieren
Wenn Ihre Funktionslogik mit Cloud Functions oder Cloud Run implementiert ist, müssen Sie in der Verbindungseinstellung der Chat-App im Feld Authentication Audience (Zielgruppe für die Authentifizierung) die Option HTTP endpoint URL (HTTP-Endpunkt-URL) auswählen und darauf achten, dass die HTTP-Endpunkt-URL in der Konfiguration der URL des Cloud Functions- oder Cloud Run-Endpunkts entspricht.
Anschließend müssen Sie das Google Chat-Dienstkonto chat@system.gserviceaccount.com
als Auslöser autorisieren.
Die folgenden Schritte zeigen, wie Cloud Functions (1. Generation) verwendet wird:
Console
Nachdem Sie die Funktion in Google Cloud bereitgestellt haben:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Functions:
Klicken Sie in der Cloud Functions-Liste 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.com
ein.Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Cloud Functions > Cloud Functions-Invoker aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud functions add-iam-policy-binding
aus:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
Ersetzen Sie RECEIVING_FUNCTION
durch den Namen der Funktion Ihrer Chat-App.
Die folgenden Schritte zeigen, wie Sie Cloud Functions (2. Generation) oder Cloud Run-Dienste verwenden:
Console
Nach dem Bereitstellen Ihrer Funktion oder Ihres Dienstes in Google Cloud:
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.com
ein.Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Cloud Run > Cloud Run Invoker aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud functions add-invoker-policy-binding
aus:
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 „Authentication Audience“ (Authentifizierungszielgruppe) der Verbindungseinstellung der Chat-App 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
gesetzt.
Das Feld Authentication Audience (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, lautet das Feld Authentication Audience (Authentifizierungszielgruppe) im ID-Token https://example.com/app/
.
In den folgenden Beispielen wird gezeigt, wie Sie mithilfe der Google OAuth-Clientbibliothek prüfen, ob das Bearer-Token von Google Chat ausgestellt wurde und auf Ihre App ausgerichtet ist.
Java
Python
Node.js
Anfragen mit einem JWT der Projektnummer authentifizieren
Wenn das Feld „Authentication Audience“ (Authentifizierungszielgruppe) der Verbindungseinstellung der Chat-App 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 gesetzt, die Sie zum Erstellen Ihrer Chat-App verwendet haben. Wenn die Cloud-Projektnummer Ihrer Chat-App beispielsweise 1234567890
lautet, ist das Feld audience
im JWT 1234567890
.
In den folgenden Beispielen wird gezeigt, wie Sie mithilfe der Google OAuth-Clientbibliothek prüfen, ob das Bearer-Token von Google Chat ausgestellt wurde und auf Ihr Projekt ausgerichtet ist.
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 Google Chat finden Sie unter Authentifizierung.
- Richten Sie die Authentifizierung und Autorisierung mit Nutzeranmeldedaten oder einem Dienstkonto ein.