W tym przewodniku opisano, jak bezpiecznie autoryzować platformę połączonych aplikacji, aby uzyskać dostęp do usług. W przypadku integracji MCP z połączonymi aplikacjami zdecydowanie zalecamy używanie OAuth 2.1, standardu branżowego w zakresie autoryzacji delegowanej, z Proof Key for Code Exchange (PKCE), aby zapewnić najwyższy poziom bezpieczeństwa danych użytkowników i niezawodność w przepływach „agentowych”. Platforma połączonych aplikacji obsługuje typ uwierzytelnienia za pomocą kodu autoryzacji z parametrami PKCE (Proof Key for Code Exchange).
PKCE jest obowiązkowy w przypadku wszystkich protokołów OAuth 2.1 i opcjonalny w przypadku OAuth 2.0.
Aby umożliwić automatyczne wykrywanie i usprawnić proces wprowadzania, serwer autoryzacji musi obsługiwać rozszerzenie metadanych serwera autoryzacji, nazywane też OAuth Discovery.
Jak Gemini MCP pobiera kod JSON konfiguracji
Konsola Gemini MCP próbuje pobrać plik JSON konfiguracji z podanych niżej adresów URL w kolejności podanej w tej sekcji.
Jeśli adres URL serwera autoryzacji znajduje się na najwyższym poziomie domeny (np. https://auth.example.com), Gemini dołącza do domeny standardowe katalogi „well-known” i szuka serwera w tej kolejności:
https://auth.example.com/.well-known/oauth-authorization-serverhttps://auth.example.com/.well-known/openid-configuration
Jeśli adres URL serwera autoryzacji znajduje się w określonym podkatalogu lub ścieżce w domenie, na przykład https://auth.example.com/realms/master, Gemini dołącza te same „dobrze znane” ścieżki bezpośrednio do tego podkatalogu w następującej kolejności.
.../realms/master/.well-known/oauth-authorization-server.../realms/master/.well-known/openid-configuration.../realms/master/.well-known/openid-configuration(obsługa ścieżek zagnieżdżonych)
Wymagane funkcje JSON
Odpowiedź dotycząca metadanych musi zawierać te pola. Integracja nie powiedzie się, jeśli brakuje wymaganych pól lub nie znaleziono prawidłowych typów.
authorization_endpoint- Musi być prawidłowym ciągiem znaków adresu URL.
token_endpoint- Musi być prawidłowym ciągiem znaków adresu URL.
response_types_supported- Musi zawierać ciąg znaków
code. registration_endpointNa razie Konsola Play korzysta z klienta dynamicznego.
(RFC 7591). Musisz podać punkt końcowy rejestracji w metadanych lub wpisać identyfikator klienta i klucz tajny bezpośrednio w interfejsie Konsoli Play.
Jeśli Twój serwer autoryzacji nie obsługuje dynamicznej rejestracji klientów (DCR), musisz ręcznie zaimplementować i wypełnić pola Identyfikator klienta i Tajny klucz klienta w interfejsie Konsoli Play, aby dokończyć integrację.
Jeśli Twoja implementacja obsługuje klucz dowodu dla wymiany kodu (PKCE) lub trwałe sesje, musisz uwzględnić odpowiednie pola funkcji (takie jak Challenge Methods i Grant Types) w pliku JSON wykrywania. Pomaga to zapewnić zgodność ze standardami bezpieczeństwa i łączności Gemini. Jeśli obsługujesz zakres, musisz uwzględnić pole scopes_supported.
Przykładowa konfiguracja
Poniżej znajdziesz prawidłową odpowiedź w formacie JSON, która spełnia wymagania naszego klienta.
{
"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"
]
}
W przypadku uwzględnienia PKCE poniższy fragment kodu pokazuje przykład tego, co może być zawarte w bloku JSON.
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256"]
Jeśli uwzględnisz pole scopes_supported, poniższy fragment kodu pokazuje przykład tego, co może być zawarte w bloku JSON.
"scopes_supported": ["mcp", "cart.order"],
Przepływ kodu autoryzacji (wersja uproszczona)
Poniżej opisujemy standardowy przepływ kodu autoryzacji. Ta sekwencja pokazuje dokładnie, jak platforma połączonych aplikacji bezpiecznie uzyskuje z Twojego serwera niezbędne tokeny dostępu, aby działać w imieniu użytkownika.
Prośba o autoryzację: platforma Google stwierdza, że musi wywołać Twoją funkcję, ale użytkownik nie jest jeszcze autoryzowany. Chatbot inicjuje proces, przekierowując przeglądarkę użytkownika (lub wyświetlając link) do punktu końcowego autoryzacji.
To żądanie zawiera Twój identyfikator klienta (lub wygenerowany automatycznie za pomocą DCR), identyfikator URI przekierowania Gemini i kluczowe parametry PKCE (
code_challengeicode_challenge_method).Dodaj te adresy URL do listy dozwolonych na potrzeby konfiguracji protokołu OAuth:
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/*
Zgoda użytkownika: serwer autoryzacji sprawdza poprawność żądania, uwierzytelnia użytkownika (logowanie) i prosi go o przyznanie platformie Google uprawnień dostępu do jego danych lub usługi.
Przyznanie kodu: gdy użytkownik wyrazi zgodę, serwer przekierowuje przeglądarkę użytkownika z powrotem do RedirectURI Gemini, dodając do adresu URL tymczasowy kod autoryzacji.
Wymiana tokena: backend Gemini wysyła żądanie
POSTdo punktu końcowego tokena, wymieniając kod autoryzacji na token dostępu.Przyznanie dostępu: punkt końcowy tokena weryfikuje kod i parametry PKCE, wydaje token dostępu i opcjonalnie token odświeżania, a następnie zwraca je do Gemini.
Główne wymagania dotyczące PKCE
PKCE dodaje warstwę zabezpieczeń, która zapobiega nieautoryzowanemu przechwytywaniu kodów autoryzacji.
code_verifier: kryptograficznie losowy ciąg znaków wygenerowany przez Gemini na początku procesu. Te informacje są prywatne.code_challenge: przekształceniecode_verifier, zwykle haszowanie SHA256. Jest on wysyłany publicznie, jak opisano w kroku 1 przepływu kodu autoryzacji.- Weryfikacja: Twój punkt końcowy tokena (opisany w kroku 4 przepływu kodu autoryzacji) musi zweryfikować, czy otrzymany parametr
code_verifierpo przekształceniu jest zgodny z pierwotnym parametremcode_challenge.
Debugowanie
Szczegółowe informacje o błędach łączenia są dostępne w Eksploratorze logów. Aby włączyć i wyświetlić błędy, postępuj zgodnie z instrukcjami podanymi w artykule Monitorowanie błędów łączenia kont w projekcie w konsoli Google.
Wymagania dotyczące konfiguracji łączenia z kontem Google
Informacje o konfiguracji łączenia z kontem Google znajdziesz w tych wskazówkach dotyczących interfejsu API.
- Łączenie z kontem Google za pomocą protokołu OAuth
- Interfejs API do łączenia kont
- Google Account Linking API
Aby pomyślnie zarejestrować integrację OAuth, musisz skonfigurować określone szczegóły dotyczące serwera autoryzacji. Upewnij się, że masz przygotowane te punkty końcowe, dane logowania i zasoby.
Pole konfiguracji |
Opis |
Odpowiedzialność dewelopera |
Identyfikator klienta i obiekt tajny |
Unikalne dane logowania, które serwer autoryzacji generuje specjalnie dla platformy połączonych aplikacji. Tajny klucz klienta to bezpieczne dane uwierzytelniające (hasło) powiązane z identyfikatorem klienta. Uwaga: jeśli identyfikator klienta został wydany przez dewelopera, musi on go podać. Jeśli identyfikator klienta został wydany przez Google, deweloper może musieć zarejestrować lub zweryfikować klucz tajny. |
Używaj identyfikatora podanego przez platformę we wszystkich żądaniach autoryzacji. |
Authorization Endpoint |
URL, na który użytkownicy są przekierowywani w celu uwierzytelnienia i wyrażenia zgody |
Hostuj punkt końcowy, na przykład |
Token Endpoint (Punkt końcowy tokena) |
Punkt końcowy backendu do wymiany kodów autoryzacji na tokeny dostępu/tokeny odświeżania i odświeżania wygasłych tokenów. |
Hostuj ten punkt końcowy, np. https://yourdomain.com/oauth/token. |
Punkt końcowy unieważnienia |
Adres URL, który powiadamia system o unieważnieniu tokena, gdy użytkownik się rozłączy. Gdy użytkownik odłączy Twoją integrację na platformie Connected Apps Platform, wyślemy żądanie POST do punktu końcowego /revoke zawierającego token dostępu lub token odświeżania. |
Hostuj punkt końcowy, na przykład Serwer musi obsłużyć to żądanie, trwale unieważniając podany token. Dzięki temu wszelkie kolejne próby użycia tego tokena przez platformę połączonych aplikacji zakończą się niepowodzeniem, co zapewni bezpieczeństwo danych użytkownika po rozłączeniu. |
Identyfikator URI przekierowania |
Konkretny adres URL wywołania zwrotnego podany przez platformę, na który serwer autoryzacji odsyła kod po wyrażeniu zgody. |
Skonfiguruj serwer autoryzacji tak, aby akceptował tylko oficjalny, zarejestrowany identyfikator URI przekierowania z platformy. |
Odświeżanie |
Mechanizm, który umożliwia platformie połączonych aplikacji uzyskanie nowego tokena dostępu po wygaśnięciu bieżącego, co pozwala na bezproblemowe utrzymanie integracji bez konieczności wielokrotnego logowania się przez użytkownika. Gdy istniejący token dostępu wygaśnie, platforma połączonych aplikacji automatycznie wyśle żądanie |
Serwer musi zweryfikować podany token odświeżania i zwrócić nowy token dostępu w odpowiedzi JSON. Aby wdrożyć trwałe połączenie, musisz unikać rotacji tokena odświeżania podczas tej wymiany. Zamiast wydawać nowy, zwróć dokładnie ten sam token odświeżania w odpowiedzi JSON i przedłuż jego datę ważności w backendzie. |
Typ odpowiedzi |
Aby obsługiwać przepływ kodu autoryzacji, należy skonfigurować tę wartość jako CODE. |
|
Zakresy |
Zestaw określonych uprawnień i poziomów dostępu, które określają, do czego token jest upoważniony. Muszą one być wstępnie zdefiniowane w konfiguracji, aby Google mogło o nie poprosić podczas początkowego uzgadniania autoryzacji. |
Musisz podać listę domyślnych zakresów (np. Żądane zakresy powinny być jak najmniejsze (zasada jak najmniejszych uprawnień), ale w pełni wystarczające do obsługi głównych ścieżek użytkownika, które obsługuje integracja z MCP. |
Zasoby interfejsu: logo |
Logo dewelopera, które będzie wyświetlane na ekranach łączenia kont i zgody. |
Musi to być kwadratowy obraz wektorowy (SVG) o okrągłym wyglądzie i rozmiarze co najmniej 500 x 500 pikseli. Zobacz na przykład |
Łączenie aplikacji natywnej (przejście do aplikacji) |
Aby obsługiwać łączenie kont bezpośrednio z natywnych aplikacji na Androida lub iOS, zdecydowanie odradzamy korzystanie ze standardowych komponentów WebView. Zamiast tego zdecydowanie zalecamy wdrożenie funkcji Przejście do aplikacji, aby zapewnić użytkownikom płynne działanie. |
Przejdź weryfikację w Sklepie Play i sklepie z aplikacjami oraz umieść identyfikatory URI przekierowania Google bezpośrednio w aplikacjach natywnych, aby zapewnić bezpieczne przekierowanie autoryzacji między aplikacjami. |
Czas ważności tokena |
(Opcjonalnie) Okres ważności tokena dostępu, po którym wymagane jest odświeżenie. Przydatne do konfigurowania zasad dotyczących limitu czasu w GAL. |
W zależności od potrzeb związanych z bezpieczeństwem okres ważności może wynosić od kilku minut do kilku godzin lub dni (np. |
Typowe błędy integracji
Oto lista typowych błędów i potencjalnych rozwiązań dotyczących procesu integracji.
- Brak uprawnienia „code”: automatyczny system platformy Gemini wyraźnie sprawdza, czy parametr response_types_supported ma wartość „code”.
- Brak punktu końcowego rejestracji: nawet jeśli Twój serwer obsługuje dokumenty metadanych identyfikatora klienta, aplikacja Gemini (działająca jako klient OAuth łączący się z Twoim serwerem) wymaga obecnie, aby w pliku JSON wykrywania znajdował się dedykowany punkt końcowy registration_endpoint.
- Błąd inny niż 200: jeśli automatyczny mechanizm wykrywania metadanych Gemini trafi na adres URL well-known i otrzyma błąd 404 lub 500, nie będzie próbował odgadnąć innych adresów URL. Upewnij się, że adres URL wykrywania jest publicznie dostępny.