In diesem Leitfaden wird beschrieben, wie Sie die Plattform für verbundene Apps sicher für den Zugriff auf Ihre Dienste autorisieren. Für MCP-Integrationen in verbundene Apps empfehlen wir dringend die Verwendung von OAuth 2.1, dem Branchenstandard für delegierte Autorisierung, mit Proof Key for Code Exchange (PKCE), um die höchste Sicherheit für Nutzerdaten und Zuverlässigkeit in agentischen Abläufen zu gewährleisten. Die Plattform für verbundene Apps unterstützt den Genehmigungstyp „Autorisierungscode“ mit PKCE-Parametern (Proof Key for Code Exchange).
PKCE ist für alle OAuth 2.1-Anfragen obligatorisch und für OAuth 2.0 optional.
Damit die automatische Erkennung aktiviert und der Onboarding-Prozess optimiert werden kann, muss Ihr Autorisierungsserver die Erweiterung für Autorisierungsserver-Metadaten unterstützen, die auch als OAuth Discovery bezeichnet wird.
So ruft Gemini MCP die JSON-Konfiguration ab
Die Gemini MCP-Konsole versucht, Ihre Konfigurations-JSON-Datei von den folgenden URLs in der in diesem Abschnitt gezeigten Reihenfolge abzurufen.
Wenn sich die URL Ihres Autorisierungsservers auf der obersten Ebene Ihrer Domain befindet (z. B. https://auth.example.com), hängt Gemini standardmäßige „well-known“-Verzeichnisse an Ihre Domain an und sucht in der folgenden Reihenfolge nach dem Server:
https://auth.example.com/.well-known/oauth-authorization-serverhttps://auth.example.com/.well-known/openid-configuration
Wenn sich die URL Ihres Autorisierungsservers in einem bestimmten Unterverzeichnis oder Pfad Ihrer Domain befindet, z. B. https://auth.example.com/realms/master, hängt Gemini die bekannten Pfade direkt an dieses Unterverzeichnis an, und zwar in der folgenden Reihenfolge.
.../realms/master/.well-known/oauth-authorization-server.../realms/master/.well-known/openid-configuration.../realms/master/.well-known/openid-configuration(Unterstützung für verschachtelte Pfade)
Erforderliche JSON-Funktionen
Die Metadatenantwort muss die folgenden Felder enthalten. Die Integration schlägt fehl, wenn Pflichtfelder fehlen oder keine gültigen Typen gefunden werden.
authorization_endpoint- Muss eine gültige String-URL sein.
token_endpoint- Muss eine gültige String-URL sein.
response_types_supported- Muss den String
codeenthalten. registration_endpointDerzeit wird in der Play Console der dynamische Client verwendet.
Registrierung (RFC 7591). Sie müssen in Ihren Metadaten einen Registrierungsendpunkt angeben oder die Client-ID und den Clientschlüssel direkt in der Play Console-Benutzeroberfläche eingeben.
Wenn dein Autorisierungsserver die dynamische Clientregistrierung (Dynamic Client Registration, DCR) nicht unterstützt, musst du die Felder Client-ID und Clientschlüssel in der Play Console-Benutzeroberfläche manuell implementieren und ausfüllen, um die Integration abzuschließen.
Wenn Ihre Implementierung Proof Key for Code Exchange (PKCE) oder persistente Sitzungen unterstützt, müssen Sie die relevanten Funktionsfelder (z. B. Challenge Methods und Genehmigungstypen) in Ihre Discovery-JSON-Datei aufnehmen. So wird die Kompatibilität mit den Sicherheits- und Verbindungsstandards von Gemini sichergestellt. Wenn Sie den Bereich unterstützen, müssen Sie das Feld scopes_supported angeben.
Konfigurationsbeispiel
Die folgende JSON-Antwort ist gültig und erfüllt die Anforderungen unseres Clients.
{
"issuer": "https://auth.example.com",
"authorization_endpoint": "https://auth.example.com/oauth/authorize",
"token_endpoint": "https://auth.example.com/oauth/token",
"registration_endpoint": "https://auth.example.com/oauth/register",
"response_types_supported": [
"code",
"token",
"id_token"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
]
}
Wenn Sie PKCE einbeziehen, zeigt das folgende Snippet ein Beispiel dafür, was im JSON-Block enthalten sein könnte.
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256"]
Wenn Sie das Feld scopes_supported einfügen, zeigt das folgende Snippet ein Beispiel dafür, was im JSON-Block enthalten sein könnte.
"scopes_supported": ["mcp", "cart.order"],
Autorisierungscode-Vorgang (vereinfachte Version)
In den folgenden Schritten wird der Standard-Autorisierungscode-Vorgang beschrieben. Diese Sequenz veranschaulicht genau, wie die Connected Apps Platform die erforderlichen Zugriffstokens sicher von Ihrem Server abruft, um im Namen eines Nutzers zu agieren.
Autorisierungsanfrage: Die Google-Oberfläche stellt fest, dass sie Ihre Funktion aufrufen muss, der Nutzer aber noch nicht autorisiert ist. Der Chatbot leitet den Browser des Nutzers an Ihren Autorisierungsendpunkt weiter oder zeigt einen Link dorthin an.
Diese Anfrage enthält Ihre Client-ID (oder wird automatisch mit DCR generiert), den Weiterleitungs-URI von Gemini und wichtige PKCE-Parameter (
code_challengeundcode_challenge_method).Setzen Sie die folgenden URLs für die OAuth-Einrichtung auf die Zulassungsliste:
https://oauth-redirect.googleusercontent.com/r/*https://oauth-redirect-sandbox.googleusercontent.com/r/*https://oauth-redirect-test.googleusercontent.com/r/*https://oauth-redirect.googleusercontent.com/a/*https://oauth-redirect-sandbox.googleusercontent.com/a/*https://oauth-redirect-test.googleusercontent.com/a/*
Nutzereinwilligung: Ihr Autorisierungsserver validiert die Anfrage, authentifiziert den Nutzer (Anmeldung) und bittet den Nutzer, der Google-Oberfläche die Berechtigung zu erteilen, auf seine Daten oder seinen Dienst zuzugreifen.
Code Grant: Nachdem der Nutzer seine Einwilligung erteilt hat, leitet Ihr Server den Browser des Nutzers zurück zur RedirectURI von Gemini und hängt einen temporären Autorisierungscode an die URL an.
Tokenaustausch: Das Backend hinter Gemini sendet eine
POST-Anfrage an Ihren Token-Endpunkt und tauscht den Autorisierungscode gegen ein Zugriffstoken aus.Zugriff gewährt: Ihr Token-Endpunkt überprüft den Code und die PKCE-Parameter, stellt ein Zugriffstoken und optional ein Aktualisierungstoken aus und gibt diese an Gemini zurück.
Wichtige PKCE-Anforderungen
PKCE bietet eine zusätzliche Sicherheitsebene, um das unbefugte Abfangen von Autorisierungscodes zu verhindern.
code_verifier: Ein kryptografisch zufälliger String, der von Gemini zu Beginn des Ablaufs generiert wird. Diese Informationen sind privat.code_challenge: Eine Transformation dercode_verifier, normalerweise das SHA256-Hashing. Diese wird öffentlich gesendet, wie in Schritt 1 des Autorisierungscode-Vorgangs beschrieben.- Validierung: Ihr Token-Endpunkt (beschrieben in Schritt 4 des Autorisierungscode-Vorgangs) muss prüfen, ob der empfangene
code_verifiernach der Transformation mit dem ursprünglichencode_challengeübereinstimmt.
Debugging
Detaillierte Informationen zu Verknüpfungsfehlern finden Sie im Log-Explorer. Folgen Sie der Anleitung unter Fehler bei der Kontoverknüpfung in Ihrem Google Console-Projekt im Blick behalten, um Fehler zu aktivieren und anzusehen.
Anforderungen an die Konfiguration der Google-Kontoverknüpfung
In den folgenden API-Richtlinien finden Sie Informationen zur Konfiguration der Google-Kontoverknüpfung.
Damit Sie Ihre OAuth-Integration erfolgreich registrieren können, müssen Sie bestimmte Details zu Ihrem Autorisierungsserver konfigurieren. Bereiten Sie die folgenden Endpunkte, Anmeldedaten und Assets vor.
Konfigurationsfeld |
Beschreibung |
Verantwortung des Entwicklers |
Client-ID und Secret |
Die eindeutigen Anmeldedaten, die Ihr Autorisierungsserver speziell für die Plattform für verbundene Apps generiert. Der Clientschlüssel sind die sicheren Sicherheitsanmeldedaten (Passwort), die mit der Client-ID verknüpft sind. Hinweis: Wenn der Entwickler die Client-ID ausgestellt hat, muss er sie angeben. Wenn Google die Client-ID ausgestellt hat, muss der Entwickler möglicherweise einen Clientschlüssel registrieren oder bestätigen. |
Verwenden Sie die von der Plattform bereitgestellte ID in allen Autorisierungsanfragen. |
Autorisierungsendpunkt |
Die URL, zu der Nutzer weitergeleitet werden, um sich zu authentifizieren und ihre Einwilligung zu erteilen |
Hosten Sie den Endpunkt, z. B. |
Token-Endpunkt |
Der Backend-Endpunkt, um Autorisierungscodes gegen Zugriffs-/Aktualisierungstokens auszutauschen und abgelaufene Tokens zu aktualisieren. |
Hosten Sie diesen Endpunkt, z. B. https://yourdomain.com/oauth/token. |
Widerrufsendpunkt |
Die URL, über die Ihr System benachrichtigt wird, dass ein Token ungültig gemacht werden soll, wenn ein Nutzer die Verbindung trennt. Wenn ein Nutzer die Verknüpfung oder Verbindung zu Ihrer Integration auf der Plattform für verbundene Apps aufhebt, senden wir eine POST-Anfrage an den Endpunkt „/revoke“, die das Zugriffs- oder Aktualisierungstoken enthält. |
Hosten Sie den Endpunkt, z. B. Ihr Server muss diese Anfrage verarbeiten, indem er das bereitgestellte Token dauerhaft ungültig macht. Dadurch schlagen alle nachfolgenden Versuche der Plattform für verbundene Apps, dieses Token zu verwenden, fehl und die Daten des Nutzers bleiben nach der Trennung geschützt. |
Weiterleitungs-URI |
Die spezifische Callback-URL, die von der Plattform bereitgestellt wird, an die der Autorisierungsserver den Code nach der Einwilligung zurücksendet. |
Konfigurieren Sie Ihren Autorisierungsserver so, dass er nur den offiziellen, registrierten Weiterleitungs-URI von der Plattform akzeptiert. |
Aktualisieren |
Ein Mechanismus, mit dem die Connected Apps Platform ein neues Zugriffstoken erhalten kann, wenn das aktuelle abläuft. So bleibt die Integration nahtlos verbunden, ohne dass sich der Nutzer wiederholt anmelden muss. Wenn ein vorhandenes Zugriffstoken abläuft, sendet die Plattform für verbundene Apps automatisch eine |
Ihr Server muss das bereitgestellte Aktualisierungstoken validieren und ein neues Zugriffstoken in der JSON-Antwort zurückgeben. Wenn Sie die dauerhafte Verknüpfung implementieren möchten, dürfen Sie das Aktualisierungstoken während dieses Austauschs nicht rotieren. Anstatt ein neues Token auszustellen, geben Sie genau dasselbe Aktualisierungstoken in der JSON-Antwort zurück und verlängern Sie das Ablaufdatum im Backend. |
Antworttyp |
Dieser muss auf CODE konfiguriert sein, um den Autorisierungscode-Vorgang zu unterstützen. |
|
Bereiche |
Die spezifischen Berechtigungen und Zugriffsebenen, die festlegen, was mit dem Token autorisiert werden kann. Diese müssen in Ihrer Konfiguration vordefiniert sein, damit Google sie während des ersten Autorisierungs-Handshakes anfordern kann. |
Sie müssen eine Liste der Standardbereiche (z. B. Die angeforderten Bereiche sollten so weit wie möglich eingeschränkt sein (Prinzip der geringsten Berechtigung), aber für die Critical User Journeys (CUJs), die Ihre MCP-Integration unterstützt, vollständig ausreichen. |
UI-Assets: Logo |
Entwicklerlogo, das auf den Bildschirmen für die Kontoverknüpfung und die Einwilligung angezeigt werden soll. |
Es muss ein quadratisches Vektor-Image (SVG) mit kreisförmigem Erscheinungsbild und mindestens 500 × 500 Pixeln sein. Beispiele finden Sie unter |
Verknüpfung mit systemeigenen Apps (App Flip) |
Wenn Sie die Kontoverknüpfung direkt über Ihre nativen Android- oder iOS-Apps unterstützen möchten, sollten Sie keine Standard-WebViews verwenden. Stattdessen wird dringend empfohlen, App Flip zu implementieren, um eine nahtlose Nutzererfahrung zu ermöglichen. |
Schließen Sie die Bestätigung im Google Play Store und App Store ab und binden Sie die Weiterleitungs-URIs von Google direkt in Ihre nativen Anwendungen ein, um eine sichere App-zu-App-Autorisierung zu ermöglichen. |
Token-Lebensdauer |
(Optional) Die Dauer, für die ein Zugriffstoken gültig ist, bevor eine Aktualisierung erforderlich ist. Nützlich zum Konfigurieren von Zeitlimitrichtlinien in GAL. |
Übliche Ablaufzeiten reichen je nach Sicherheitsanforderungen von Minuten über Stunden bis hin zu Tagen, z. B. |
Häufige Integrationsfehler
Im Folgenden finden Sie eine Liste häufiger Fehler und möglicher Lösungen für den Integrationsprozess.
- Fehlende „code“-Berechtigung: Das automatisierte System der Gemini-Plattform prüft response_types_supported explizit auf den Wert „code“.
- Fehlender Registrierungsendpunkt: Auch wenn Ihr Server Client-ID-Metadatendokumente unterstützt, benötigt die Gemini App (die als OAuth-Client fungiert, der sich mit Ihrem Server verbindet) derzeit einen dedizierten „registration_endpoint“ im Discovery-JSON.
- Fehler, der nicht „200“ ist: Wenn der automatisierte Metadaten-Erkennungsmechanismus von Gemini auf Ihre well-known URL zugreift und einen 404- oder 500-Fehler erhält, wird nicht versucht, andere URLs zu erraten. Achten Sie darauf, dass die Discovery-URL öffentlich zugänglich ist.