In diesem Abschnitt wird beschrieben, wie Sie bei Google Chat-Apps, die auf HTTP-Endpunkten basieren, überprüfen können, ob die Anfragen an Ihren Endpunkt von Chat stammen.
Damit Interaktionsereignisse an den Endpunkt Ihrer Chat-App gesendet werden, stellt Google Anfragen an Ihren Dienst. Damit Sie überprüfen können, ob die Anfrage von Google stammt, enthält Chat in jedem Authorization
-Header jeder HTTPS-Anfrage an Ihren Endpunkt 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 von Google erstelltes kryptografisches Token. Der Typ des Bearer-Tokens und der Wert des Felds audience
hängen vom Typ der Authentifizierungszielgruppe ab, die Sie beim Konfigurieren der Chat-App ausgewählt haben.
Wenn Sie Ihre Chat-App mit Cloud Functions oder Cloud Run implementiert haben, übernimmt Cloud IAM die Tokenüberprüfung automatisch. Sie müssen das Google Chat-Dienstkonto nur als autorisierten Aufrufer hinzufügen. Wenn Ihre App einen eigenen HTTP-Server implementiert, können Sie Ihr Bearertoken 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 mit dem HTTPS-Antwortcode 401 (Unauthorized)
auf die Anfrage antworten.
Anfragen mit Cloud Functions oder Cloud Run authentifizieren
Wenn Ihre Funktionslogik mit Cloud Functions oder Cloud Run implementiert wird, müssen Sie im Feld Authentication Audience (Authentifizierungszielgruppe) der Verbindungseinstellung der Chat-App die Option HTTP endpoint URL (HTTP-Endpunkt-URL) auswählen. Außerdem muss die HTTP-Endpunkt-URL in der Konfiguration mit der URL des Cloud Functions- oder Cloud Run-Endpunkts übereinstimmen.
Anschließend müssen Sie das Google Chat-Dienstkonto [email protected]
als Aufrufer autorisieren.
In den folgenden Schritten wird gezeigt, wie Sie Cloud Functions (1. Generation) verwenden:
Console
Nachdem Sie Ihre 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
[email protected]
ein.Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Cloud Functions > Cloud Functions-Aufrufer 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:[email protected]' \ --role='roles/cloudfunctions.invoker'
Ersetzen Sie RECEIVING_FUNCTION
durch den Namen der Funktion Ihrer Chat-App.
In den folgenden Schritten wird beschrieben, wie Sie Cloud Functions (2. Generation) oder Cloud Run-Dienste verwenden:
Console
Nachdem Sie Ihre Funktion oder Ihren Dienst in Google Cloud bereitgestellt haben:
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
[email protected]
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:[email protected]'
Ersetzen Sie RECEIVING_FUNCTION
durch den Namen der Funktion Ihrer Chat-App.
HTTP-Anfragen mit einem ID-Token authentifizieren
Wenn das Feld „Authentifizierungszielgruppe“ der Verbindungseinstellung der Chat-App auf HTTP-Endpunkt-URL festgelegt ist, ist das Bearer-Autorisierungstoken in der Anfrage ein von Google signiertes OIDC-ID-Token (OpenID Connect). Das Feld email
ist auf [email protected]
gesetzt. 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, lautet 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 Functions oder Cloud Run). Bei dieser Methode benötigt Ihr HTTP-Dienst Informationen zur URL des Endpunkts, an dem er ausgeführt wird, aber keine Informationen zur Cloud-Projektnummer.
In den folgenden Beispielen wird gezeigt, wie Sie mit der Google OAuth-Clientbibliothek überprüfen, ob das Bearertoken von Google Chat ausgestellt wurde und für Ihre App bestimmt ist.
Java
Python
Node.js
Anfragen mit einem JWT für die 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 [email protected]
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 die Cloud-Projektnummer anstelle der HTTP-Endpunkt-URL verwenden möchten, um Anfragen zu bestätigen. Das ist z. B. nützlich, 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.
Die folgenden Beispiele zeigen, wie Sie mit der Google OAuth-Clientbibliothek überprüfen, ob das Bearertoken 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 Authentifizierung.
- Richten Sie die Authentifizierung und Autorisierung mit Nutzeranmeldedaten oder einem Dienstkonto ein.