Chat-Apps und Google Chat API-Anfragen authentifizieren und autorisieren

Authentifizierung und Autorisierung sind Mechanismen, die zur Überprüfung der Identität bzw. des Zugriffs auf Ressourcen verwendet werden. In diesem Dokument wird die Authentifizierung und Autorisierung für Chat-Apps und Chat API-Anfragen beschrieben.

Prozessübersicht

Das folgende Diagramm zeigt die allgemeinen Schritte zur Authentifizierung und Autorisierung für Google Chat:

Allgemeine Schritte zur Authentifizierung und Autorisierung für Google Chat
Abbildung 1. Allgemeine Schritte zur Authentifizierung und Autorisierung in Google Chat

  1. Google Cloud-Projekt konfigurieren, die Chat API aktivieren und die Chat-App konfigurieren:Während der Entwicklung erstellen Sie ein Google Cloud-Projekt. Im Google Cloud-Projekt aktivieren Sie die Chat API, konfigurieren Ihre Chat-Anwendung und richten die Authentifizierung ein. Weitere Informationen finden Sie unter In Google Workspace entwickeln und Chat-App erstellen.

  2. Call Chat API:Wenn Ihre Anwendung die Chat API aufruft, sendet sie Anmeldedaten zur Authentifizierung an die Chat API. Wenn sich Ihre Anwendung mit einem Dienstkonto authentifiziert, werden die Anmeldedaten als Teil des Anwendungscodes gesendet. Wenn für Ihre Anwendung der Aufruf der Chat API mit einer noch nicht gewährten Nutzerauthentifizierung erforderlich ist, wird der Nutzer zur Anmeldung aufgefordert.

  3. Ressourcen anfordern: Ihre Anwendung fordert den Zugriff mit Bereichen an, die Sie beim Einrichten der Authentifizierung angeben.

  4. Nach Einwilligung fragen:Wenn sich Ihre Anwendung als Nutzer authentifiziert, zeigt Google einen OAuth-Zustimmungsbildschirm an. Hier kann der Nutzer entscheiden, ob er Ihrer Anwendung Zugriff auf die angeforderten Daten gewährt. Für die Authentifizierung mit einem Dienstkonto ist keine Nutzereinwilligung erforderlich.

  5. Genehmigte Anfrage für Ressourcen senden:Wenn der Nutzer den Autorisierungsbereichen zustimmt, bündelt Ihre App die Anmeldedaten und die vom Nutzer genehmigten Bereiche in einer Anfrage. Die Anfrage wird an den Google-Autorisierungsserver gesendet, um ein Zugriffstoken abzurufen.

  6. Google gibt ein Zugriffstoken zurück:Das Zugriffstoken enthält eine Liste der gewährten Bereiche. Wenn die zurückgegebene Liste der Bereiche restriktiver ist als die angeforderten Bereiche, deaktiviert Ihre Anwendung alle durch das Token eingeschränkten Funktionen.

  7. Auf angeforderte Ressourcen zugreifen:Ihre App verwendet das Zugriffstoken von Google, um die Chat API aufzurufen und auf Chat API-Ressourcen zuzugreifen.

  8. Aktualisierungstoken abrufen (optional): Wenn die Anwendung über die Lebensdauer eines einzelnen Zugriffstokens auf die Google Chat API zugreifen muss, kann sie ein Aktualisierungstoken abrufen. Weitere Informationen finden Sie unter OAuth 2.0 für den Zugriff auf Google APIs verwenden.

  9. Weitere Ressourcen anfordern:Wenn die Anwendung mehr Zugriff benötigt, wird der Nutzer aufgefordert, neue Bereiche zu gewähren. Dies führt zu einer neuen Anfrage zum Abrufen eines Zugriffstokens (Schritte 3–6).

Wann ist eine Authentifizierung für Chat-Apps erforderlich?

Chat-Apps können Nachrichten als Antwort auf eine Nutzerinteraktion oder asynchron senden. Außerdem können sie im Namen eines Nutzers Aufgaben ausführen, z. B. einen Chatbereich erstellen oder eine Liste von Personen in einem Chatbereich abrufen.

Chatanwendungen erfordern keine Authentifizierung, um auf eine Nutzerinteraktion zu reagieren, es sei denn, die Chat-Anwendung ruft während der Verarbeitung einer Antwort die Chat API oder eine andere Google API auf.

Zum Senden asynchroner Nachrichten oder Ausführen von Aufgaben im Namen eines Nutzers senden Chat-Anwendungen RESTful-Anfragen an die Chat API, für die eine Authentifizierung und Autorisierung erforderlich sind.

Für Antworten auf Nutzerinteraktionen ist keine Authentifizierung erforderlich

Google Chat-Anwendungen müssen sich nicht als Nutzer oder Chat-App authentifizieren, um Interaktionsereignisse synchron zu empfangen und zu beantworten.

Google Chat-Apps empfangen Interaktionsereignisse, wenn ein Nutzer mit einer Chat-App interagiert oder sie aufruft, darunter:

  • Ein Nutzer sendet eine Nachricht an eine Chat-App.
  • Ein Nutzer erwähnt eine Chat-App @erwähnt.
  • Ein Nutzer ruft einen der Slash-Befehle der Chat-Anwendung auf.

Das folgende Diagramm zeigt eine Anfrage-Antwort-Sequenz zwischen einem Chat-Nutzer und einer Chat-Anwendung:

Keine Autorisierung für Interaktionsereignisse in der Chat-App erforderlich
Abbildung 2: Für Interaktionsereignisse in einer Chat-App ist keine Authentifizierung erforderlich.

  1. Der Nutzer sendet eine Nachricht an die Chat-App in Google Chat.
  2. Google Chat leitet die Nachricht an die App weiter.
  3. Die Anwendung empfängt die Nachricht, verarbeitet sie und gibt eine Antwort an Google Chat zurück.
  4. Google Chat rendert die Antwort für den Nutzer oder in einem Gruppenbereich.

Diese Sequenz wiederholt sich für jedes Interaktionsereignis einer Chat-App.

Für asynchrone Nachrichten ist eine Authentifizierung erforderlich

Asynchrone Nachrichten treten auf, wenn eine Chat-Anwendung eine Anfrage an die Chat API sendet, für die eine Authentifizierung und Autorisierung erforderlich ist.

Durch Aufrufen der Chat API können Chat-Apps Nachrichten in Google Chat posten oder im Namen eines Nutzers Aufgaben erledigen und auf Daten zugreifen. Nachdem ein Serverausfall erkannt wurde, kann eine Chat-Anwendung beispielsweise die Chat API für Folgendes aufrufen:

  • Erstellen Sie einen Chatbereich, in dem der Ausfall untersucht und behoben werden kann.
  • Fügen Sie dem Chatbereich Personen hinzu.
  • Posten Sie eine Nachricht im Chatbereich mit Details zum Ausfall.

Das folgende Diagramm zeigt eine asynchrone Nachrichtensequenz zwischen einer Chat-App und einem Chatbereich:

Authentifizierung für asynchrone Nachrichten erforderlich
Abbildung 3. Für asynchrone Nachrichten ist eine Authentifizierung erforderlich.

  1. Eine Chat-App erstellt eine Nachricht, indem sie die Chat API mit der Methode spaces.messages.create aufruft, und fügt Nutzeranmeldedaten in die HTTP-Anfrage ein.
  2. Google Chat authentifiziert die Chat-App mit Dienstkonto- oder Nutzeranmeldedaten.
  3. Google Chat rendert die Nachricht der Anwendung in einem angegebenen Chatbereich.

Chat API-Bereiche

Konfigurieren Sie den OAuth-Zustimmungsbildschirm und wählen Sie Bereiche aus, um festzulegen, welche Informationen Nutzern und Anwendungsprüfern angezeigt werden. Registrieren Sie Ihre Anwendung außerdem, damit Sie sie später veröffentlichen können.

Zum Festlegen der Zugriffsebene für Ihre Anwendung müssen Sie Autorisierungsbereiche angeben und deklarieren. Ein Autorisierungsbereich ist ein OAuth 2.0-URI-String, der den Namen der Google Workspace-Anwendung, die Art von Daten, auf die er zugreift, und die Zugriffsebene enthält.

Nicht vertrauliche Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.bot

Der Bereich chat.bot unterstützt nur Dienstkonten. Eine Authentifizierung mit Nutzeranmeldedaten oder einer domainweiten Delegierung ist mit diesem Bereich nicht möglich.

Hiermit können Chat-Apps Chats ansehen und Nachrichten senden. Gewährt Zugriff auf alle Funktionen, die für Chat-Apps verfügbar sind.

Sensible Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.spaces Unterhaltungen und Gruppenbereiche erstellen sowie Metadaten (einschließlich Einstellungen für den Verlauf) in Chat aufrufen oder aktualisieren.
https://www.googleapis.com/auth/chat.spaces.create Sie können neue Unterhaltungen in Google Chat erstellen.
https://www.googleapis.com/auth/chat.spaces.readonly Chats und Gruppenbereiche in Google Chat ansehen.
https://www.googleapis.com/auth/chat.memberships Mitglieder in Google Chat-Unterhaltungen aufrufen, hinzufügen und entfernen.
https://www.googleapis.com/auth/chat.memberships.app Sich zu Google Chat-Unterhaltungen hinzufügen oder daraus entfernen.
https://www.googleapis.com/auth/chat.memberships.readonly Mitglieder in Chat-Unterhaltungen ansehen.
https://www.googleapis.com/auth/chat.messages.create Nachrichten in Google Chat schreiben und senden
https://www.googleapis.com/auth/chat.messages.reactions Reaktionen auf Nachrichten in Google Chat ansehen, hinzufügen und löschen.
https://www.googleapis.com/auth/chat.messages.reactions.create Reaktionen auf Nachrichten in Google Chat hinzufügen
https://www.googleapis.com/auth/chat.messages.reactions.readonly Reaktionen auf eine Nachricht in Google Chat ansehen.

Eingeschränkte Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.delete Unterhaltungen und Gruppenbereiche löschen sowie den Zugriff auf verknüpfte Dateien in Chat entfernen.
https://www.googleapis.com/auth/chat.import Gruppenbereiche, Nachrichten und Mitgliedschaften in Google Chat importieren Weitere Informationen finden Sie unter Chat-Apps zum Importieren von Daten autorisieren.
https://www.googleapis.com/auth/chat.messages Sie können Nachrichten anzeigen, verfassen, senden, aktualisieren und löschen sowie Reaktionen auf Nachrichten hinzufügen, ansehen und löschen.
https://www.googleapis.com/auth/chat.messages.readonly Nachrichten und Reaktionen in Google Chat ansehen.

Die Bereiche in den vorherigen Tabellen geben ihre Vertraulichkeit gemäß den folgenden Definitionen an:

Wenn Ihre Anwendung Zugriff auf andere Google APIs benötigt, können Sie auch diese Bereiche hinzufügen. Weitere Informationen zu Google API-Bereichen finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.

Weitere Informationen zu Bereichen für Google Workspace APIs finden Sie unter OAuth-Zustimmungsbildschirm konfigurieren und Bereiche auswählen.

Arten der erforderlichen Authentifizierung

Es gibt zwei Möglichkeiten, wie sich Chat-Apps bei der Chat API authentifizieren und autorisieren können: Nutzeranmeldedaten oder Dienstkonten.

Mit der Autorisierung von Nutzeranmeldedaten kann eine Chat-Anwendung auf Nutzerdaten zugreifen und Aktionen im Namen eines Nutzers ausführen. OAuth-Bereiche geben die autorisierten Daten und Aktionen an. Diese Chat-Apps können jedoch nicht öffentlich veröffentlicht werden. Weitere Informationen finden Sie unter Google Chat-Apps veröffentlichen.

Mit der App-Autorisierung greift eine Chat-App mithilfe von Dienstkonto-Anmeldedaten auf die API als Anwendung zu. Für die Anwendungsautorisierung wird immer der Autorisierungsbereich chat.bot verwendet.

Als Domainadministrator können Sie eine domainweite Delegierung von Befugnissen erteilen, um das Dienstkonto einer Anwendung für den Zugriff auf die Daten Ihrer Nutzer zu autorisieren, ohne dass jeder Nutzer seine Zustimmung geben muss. Nachdem Sie die domainweite Delegierung konfiguriert haben, können Sie API-Aufrufe mit Ihrem Dienstkonto ausführen, um die Identität eines Nutzerkontos zu übernehmen. Obwohl ein Dienstkonto zur Authentifizierung verwendet wird, wird bei der domainweiten Delegierung die Identität eines Nutzers übernommen. Dies gilt daher als Nutzerauthentifizierung. Für jede Funktion, für die eine Nutzerauthentifizierung erforderlich ist, kann die domainweite Delegierung verwendet werden.

Bei der Entscheidung, welche Art von Anmeldedaten für eine bestimmte API-Anfrage verwendet werden soll, denken Sie daran, dass einige API-Methoden nur bestimmte Anmeldedaten unterstützen. Wenn eine API-Methode beide Anmeldedaten unterstützt, wirkt sich der im Aufruf verwendete Typ der Anmeldedaten auf das zurückgegebene Ergebnis aus:

  • Bei der Anwendungsautorisierung geben die Methoden nur Ressourcen zurück, auf die die app zugreifen kann.
  • Nach der Nutzerautorisierung geben die Methoden nur Ressourcen zurück, auf die der Nutzer in der Chat-UI zugreifen kann.

Wenn Sie beispielsweise die Methode ListSpaces mit der Anwendungsautorisierung aufrufen, wird die Liste der Gruppenbereiche zurückgegeben, zu denen die Anwendung gehört. Wenn Sie ListSpaces mit Nutzerautorisierung aufrufen, wird die Liste der Gruppenbereiche zurückgegeben, in denen der Nutzer Mitglied ist. In der Praxis kann Ihre Anwendung beim Aufrufen der Chat API beide Autorisierungstypen verwenden, je nachdem, welche Funktionalität Sie nutzen möchten.

Für asynchrone Chat API-Aufrufe

In der folgenden Tabelle sind die Chat API-Methoden und ihre unterstützten Autorisierungsbereiche aufgeführt:

Methode Nutzerauthentifizierung wird unterstützt. App-Authentifizierung wird unterstützt. Unterstützte Autorisierungsbereiche
Gruppenbereiche  
Gruppenbereiche erstellen Mit der Nutzerauthentifizierung:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Gruppenbereich einrichten Mit der Nutzerauthentifizierung:
  • chat.spaces.create
  • chat.spaces
Gruppenbereich erstellen Mit der Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
Gruppenbereiche auflisten Mit der Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
Gruppenbereiche aktualisieren Mit der Nutzerauthentifizierung:
  • chat.spaces
  • chat.import
Gruppenbereiche löschen Mit der Nutzerauthentifizierung:
  • chat.delete
  • chat.import
Importvorgang für einen Gruppenbereich abschließen Mit der Nutzerauthentifizierung:
  • chat.import
Direktnachrichten suchen Mit der Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
Mitglieder  
Mitglied erstellen Mit der Nutzerauthentifizierung:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Mitglied werden Mit der Nutzerauthentifizierung:
  • chat.memberships.readonly
  • chat.memberships
Mit der App-Authentifizierung:
  • chat.bot
Listenmitglieder Mit der Nutzerauthentifizierung:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Mitglied löschen Mit der Nutzerauthentifizierung:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Nachrichten  
Mitteilung erstellen Mit der Nutzerauthentifizierung:
  • chat.messages.create
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Nachricht erhalten Mit der Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung:
  • chat.bot
Nachrichten auflisten Mit der Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Nachrichten aktualisieren Mit der Nutzerauthentifizierung:
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Nachricht löschen Mit der Nutzerauthentifizierung:
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Reaktionen  
Reaktionen erstellen Mit der Nutzerauthentifizierung:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Reaktionen auflisten Mit der Nutzerauthentifizierung:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Reaktionen löschen Mit der Nutzerauthentifizierung:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Medien und Anhänge  
Medien als Dateianhang hochladen Mit der Nutzerauthentifizierung:
  • chat.messages.create
  • chat.messages
  • chat.import
Medien herunterladen Mit der Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung:
  • chat.bot
Nachrichtenanhang abrufen Mit der App-Authentifizierung:
  • chat.bot

Für Chat-App-Interaktionsereignisse

In der folgenden Tabelle ist aufgeführt, wie Nutzer häufig mit Chat-Apps interagieren und ob eine Authentifizierung erforderlich ist oder unterstützt wird:

Szenario Keine Authentifizierung erforderlich Nutzerauthentifizierung wird unterstützt. App-Authentifizierung wird unterstützt.
Nachrichten erhalten von:
Ereignisse zu Chat-Apps
Apps Script-Callbacks
Cloud Pub/Sub
So antworten Sie auf Nachrichten:
Synchrone Ausführung über ein Interaktionsereignis in der Chat-App
Synchrone Verwendung eines Apps Script-Callback-Rückgabewerts
Neue Nachrichten senden:
Mit eingehenden Webhooks