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

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

Prozessübersicht

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

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

  1. Google Cloud-Projekt konfigurieren, die Chat API aktivieren und Ihre 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-App und richten die Authentifizierung ein. Weitere Informationen finden Sie unter Develop in Google Workspace und Chat-App erstellen.

  2. Call Chat API:Wenn Ihre App 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 in Ihrer Anwendung die Chat API mit einer Nutzerauthentifizierung aufgerufen werden muss, die noch nicht gewährt wurde, wird der Nutzer aufgefordert, sich anzumelden.

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

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

  5. Genehmigte Ressourcenanfrage senden:Wenn der Nutzer in die Autorisierungsbereiche einwilligt, 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 von Bereichen restriktiver als die angeforderten Bereiche ist, deaktiviert Ihre Anwendung alle Funktionen, die durch das Token eingeschränkt sind.

  7. Zugriff angeforderter Ressourcen:Ihre Anwendung verwendet das Zugriffstoken von Google, um die Chat API aufzurufen und auf Chat API-Ressourcen zuzugreifen.

  8. Aktualisierungstoken abrufen (optional): Wenn Ihre Anwendung über die Lebensdauer eines Zugriffstokens hinaus auf die Google Chat API zugreifen muss, kann sie ein Aktualisierungstoken abrufen. Weitere Informationen finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.

  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 Chat-Apps eine Authentifizierung erfordern

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

Chat-Anwendungen erfordern keine Authentifizierung, um auf eine Nutzerinteraktion zu reagieren, es sei denn, die Chat-App 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-Apps RESTful-Anfragen an die Chat API. Für diese Anfragen sind eine Authentifizierung und Autorisierung erforderlich.

Für Antworten auf Nutzerinteraktionen ist keine Authentifizierung erforderlich

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

Google Chat-Apps empfangen Interaktionsereignisse, wenn ein Nutzer mit einer Chat-App interagiert oder sie aufruft. Dazu gehören:

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

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

Für Chat-App-Interaktionsereignisse ist keine Autorisierung erforderlich
Abbildung 2: Für Interaktionsereignisse in Chat-Apps 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 Abfolge wiederholt sich für jedes Chat-App-Interaktionsereignis.

Für asynchrone Nachrichten ist eine Authentifizierung erforderlich

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

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

  • Erstellen Sie einen Chatbereich für die Untersuchung und Behebung des Ausfalls.
  • 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 nimmt Nutzeranmeldedaten in die HTTP-Anfrage auf.
  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 App-Prüfern angezeigt werden. Registrieren Sie dann Ihre App für die spätere Veröffentlichung.

Um die Zugriffsebene für Ihre Anwendung festzulegen, müssen Sie Autorisierungsbereiche identifizieren und deklarieren. Ein Autorisierungsbereich ist ein OAuth 2.0-URI-String, der den Namen der Google Workspace-Anwendung, die Art der Daten 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 mit der domainweiten Delegierung ist mit diesem Bereich nicht möglich.

Ermöglicht Chat-Apps, Chats anzusehen und Nachrichten zu 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 In Google Chat können Sie Unterhaltungen und Gruppenbereiche erstellen sowie Metadaten (einschließlich Verlaufs- und Zugriffseinstellungen) aufrufen oder bearbeiten.
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, aktualisieren und entfernen.
https://www.googleapis.com/auth/chat.memberships.app Sich selbst zu Google Chat-Unterhaltungen hinzufügen oder daraus entfernen.
https://www.googleapis.com/auth/chat.memberships.readonly Mitglieder in Google 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 eine Nachricht in Google Chat hinzufügen.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Reaktionen auf eine Nachricht in Google Chat ansehen.
https://www.googleapis.com/auth/chat.users.readstate „Zuletzt gelesen“-Zeit für Chat-Unterhaltungen ansehen und ändern.
https://www.googleapis.com/auth/chat.users.readstate.readonly „Zuletzt gelesen“-Zeit für Chat-Unterhaltungen anzeigen.
https://www.googleapis.com/auth/chat.admin.spaces.readonly In Google Chat können Sie Chats und Gruppenbereiche aufrufen, die der Domain des Administrators gehören.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Mitglieder und Manager von Unterhaltungen, die zur Domain des Administrators gehören, in Google Chat ansehen.
https://www.googleapis.com/auth/chat.admin.memberships Mitglieder und Manager in Unterhaltungen, die der Domain des Administrators gehören, in Google Chat ansehen, hinzufügen, aktualisieren und entfernen.

Eingeschränkte Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.delete In Google Chat können Sie Unterhaltungen und Gruppenbereiche löschen sowie den Zugriff auf verknüpfte Dateien 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 ansehen, 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.
https://www.googleapis.com/auth/chat.admin.delete Löschen Sie Unterhaltungen und Gruppenbereiche, die der Domain des Administrators gehören, und entfernen Sie den Zugriff auf verknüpfte Dateien in Google Chat.

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 diese Bereiche ebenfalls 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.

Erforderliche Authentifizierungstypen

Es gibt zwei Möglichkeiten, sich mit der Chat API von Chat-Apps zu authentifizieren und zu autorisieren: Nutzeranmeldedaten oder Dienstkonten.

Mit der Autorisierung der Nutzeranmeldedaten kann eine Chat-App auf Nutzerdaten zugreifen und im Namen eines Nutzers Aktionen ausführen. OAuth-Bereiche geben die autorisierten Daten und Aktionen an.

Bei der App-Autorisierung greift eine Chat-App mithilfe der Anmeldedaten des Dienstkontos als App auf die API zu. Die App-Autorisierung verwendet immer den Autorisierungsbereich chat.bot.

Berücksichtigen Sie bei der Entscheidung, welche Art von Anmeldedaten für eine bestimmte API-Anfrage verwendet werden soll, dass einige API-Methoden nur einen bestimmten Anmeldedatentyp unterstützen. Wenn eine API-Methode beide Anmeldedaten unterstützt, wirkt sich der im Aufruf verwendete Anmeldedatentyp 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 Anwendungsautorisierung aufrufen, wird die Liste der Bereiche zurückgegeben, in denen die Anwendung Mitglied ist. 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 je nach gewünschter Funktionalität beide Autorisierungstypen verwenden.

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  
Gruppenbereich erstellen Mit Nutzerauthentifizierung:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Gruppenbereich einrichten Mit Nutzerauthentifizierung:
  • chat.spaces.create
  • chat.spaces
Gruppenbereich anfordern Mit Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
Gruppenbereiche auflisten Mit Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
In Gruppenbereichen suchen Mit der Nutzerauthentifizierung unter Verwendung von Administratorberechtigungen:
  • chat.admin.spaces.readonly
Gruppenbereiche aktualisieren Mit Nutzerauthentifizierung:
  • chat.spaces
  • chat.import
Gruppenbereiche löschen Mit Nutzerauthentifizierung:
  • chat.delete
  • chat.import
Mit der Nutzerauthentifizierung unter Verwendung von Administratorberechtigungen:
  • chat.admin.delete
Import für einen Gruppenbereich abschließen Mit Nutzerauthentifizierung:
  • chat.import
Direktnachrichten suchen Mit Nutzerauthentifizierung:
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung:
  • chat.bot
Mitglieder  
Mitglied erstellen Mit Nutzerauthentifizierung:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Mit der Nutzerauthentifizierung unter Verwendung von Administratorberechtigungen:
  • chat.admin.memberships
Mitglied werden Mit Nutzerauthentifizierung:
  • chat.memberships.readonly
  • chat.memberships
Mit der App-Authentifizierung:
  • chat.bot
Listenmitglieder Mit Nutzerauthentifizierung:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Mit der Nutzerauthentifizierung unter Verwendung von Administratorberechtigungen:
  • chat.admin.memberships.readonly
Mitglied löschen Mit Nutzerauthentifizierung:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Mit der Nutzerauthentifizierung unter Verwendung von Administratorberechtigungen:
  • chat.admin.memberships
Nachrichten  
Nachricht erstellen Mit Nutzerauthentifizierung:
  • chat.messages.create
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Nachricht erhalten Mit Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung:
  • chat.bot
Nachrichten auflisten Mit Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Nachrichten aktualisieren Mit Nutzerauthentifizierung:
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Nachrichten löschen Mit Nutzerauthentifizierung:
  • chat.messages
  • chat.import
Mit der App-Authentifizierung:
  • chat.bot
Reaktionen  
Reaktion erstellen Mit Nutzerauthentifizierung:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Reaktionen auflisten Mit Nutzerauthentifizierung:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Reaktionen löschen Mit Nutzerauthentifizierung:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Medien und Anhänge  
Medien als Dateianhang hochladen Mit Nutzerauthentifizierung:
  • chat.messages.create
  • chat.messages
  • chat.import
Medien herunterladen Mit Nutzerauthentifizierung:
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung:
  • chat.bot
Nachrichtenanhang abrufen Mit App-Authentifizierung:
  • chat.bot
Lesestatus des Nutzers
Lesestatus des Gruppenbereichs eines Nutzers abrufen Mit Nutzerauthentifizierung:
  • chat.users.readstate
  • chat.users.readstate.readonly
Lesestatus des Gruppenbereichs eines Nutzers aktualisieren Mit Nutzerauthentifizierung:
  • chat.users.readstate
Thread-Lesestatus eines Nutzers abrufen Mit Nutzerauthentifizierung:
  • chat.users.readstate
  • chat.users.readstate.readonly
Veranstaltungen im Weltraum
Veranstaltungen aus dem Weltraum erhalten Mit Nutzerauthentifizierung:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly
Veranstaltungen aus dem Weltraum auflisten Mit Nutzerauthentifizierung:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly

Für Ereignisse in der Chat-App

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

Szenario Keine Authentifizierung erforderlich Nutzerauthentifizierung wird unterstützt App-Authentifizierung wird unterstützt
Nachrichten erhalten von:
Chat-App-Interaktionsereignisse
Apps Script-Callbacks
Cloud Pub/Sub
So antworten Sie auf Nachrichten:
Synchron mithilfe eines Chat-App-Interaktionsereignisses
Gleichzeitig unter Verwendung eines Apps Script-Callback-Rückgabewerts
Neue Nachrichten senden:
Mit eingehenden Webhooks