W przypadku aplikacji Google Chat opartych na punktach końcowych HTTP w tej sekcji dowiesz się, jak sprawdzić, czy żądania wysyłane do punktu końcowego pochodzą z Google Chat.
Aby wysyłać zdarzenia interakcji do punktu końcowego aplikacji Google Chat, Google wysyła do Twojej usługi żądania HTTPS. Aby sprawdzić, czy żądanie pochodzi od Google, Chat dołącza do każdego żądania HTTPS w nagłówku Authorization (i w polu authorizationEventObject.systemIdToken treści żądania) podpisany przez Google token identyfikacyjny OpenID Connect (OIDC) jako token okaziciela. Przykład:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Ciąg AbCdEf123456 w poprzednim przykładzie to token autoryzacji typu bearer. Ten token kryptograficzny jest podpisany przez unikalne konto usługi aplikacji do Google Chat w projekcie (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com), a pole audience jest ustawione na adres URL punktu końcowego HTTP skonfigurowany dla aplikacji do Google Chat podczas konfigurowania aplikacji do Google Chat.
Adres e-mail konta usługi aplikacji do obsługi czatu możesz skopiować z sekcji Ustawienia połączenia na karcie Konfiguracja interfejsu Chat API w konsoli Google Cloud:
W konsoli Google Cloud otwórz Menu > Interfejsy API i usługi > Włączone interfejsy API i usługi > Google Chat API > Konfiguracja:
W sekcji Funkcje interaktywne > Ustawienia połączenia skopiuj adres e-mail konta usługi (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).
Jeśli aplikacja do obsługi czatu została wdrożona za pomocą funkcji Cloud Run lub Cloud Run, Cloud IAM automatycznie obsługuje weryfikację tokena, gdy przyznasz konto usługi aplikacji do obsługi czatu rolę Cloud Run Invoker (roles/run.invoker).
Jeśli Twoja aplikacja implementuje własny serwer HTTP, możesz zweryfikować token okaziciela
za pomocą biblioteki klienta interfejsów API Google o otwartym kodzie źródłowym:
- 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
Jeśli token nie zostanie zweryfikowany w aplikacji Google Chat, usługa powinna odpowiedzieć na żądanie kodem odpowiedzi HTTPS 401 (Unauthorized).
Uwierzytelnianie żądań za pomocą funkcji Cloud Run
Jeśli logika funkcji jest zaimplementowana za pomocą funkcji Cloud Run lub Cloud Run, sprawdź, czy adresy URL punktów końcowych HTTP skonfigurowane w sekcji Triggery w ustawieniach połączenia aplikacji do obsługi czatu odpowiadają adresowi URL punktu końcowego funkcji Cloud Run.
Następnie autoryzuj konto usługi aplikacji Google Chat (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com, skopiowane z sekcji Ustawienia połączenia na karcie Konfiguracja interfejsu Chat API) jako wywołującego, wykonując te czynności:
Konsola
Po wdrożeniu funkcji lub usługi w Google Cloud:
W konsoli Google Cloud otwórz stronę Cloud Run:
Na liście usług Cloud Run kliknij pole wyboru obok funkcji odbierającej. (Nie klikaj samej funkcji).
U góry ekranu kliknij Uprawnienia. Otworzy się panel Uprawnienia.
Kliknij Dodaj podmiot zabezpieczeń.
W polu Nowe podmioty zabezpieczeń wpisz adres e-mail konta usługi aplikacji do obsługi czatu (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).W menu Wybierz rolę wybierz rolę Cloud Run.
Wywołujący Cloud Run.
Kliknij Zapisz.
gcloud
Użyj polecenia gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-gsuiteaddons.iam.gserviceaccount.com'Zastąp te elementy:
RECEIVING_FUNCTION: nazwa funkcji aplikacji do Google Chat.PROJECT_NUMBER: numer projektu z adresu e-mail konta usługi aplikacji Google Chat.
Uwierzytelnianie żądań HTTP za pomocą tokena identyfikatora
W przypadku punktów końcowych HTTP token autoryzacji w żądaniu jest podpisanym przez Google tokenem identyfikacji ID OpenID Connect (OIDC).
Pole email jest ustawione na adres e-mail konta usługi aplikacji do Google Chat (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com), a pole audience jest ustawione na adres URL punktu końcowego HTTP skonfigurowany do odbierania żądania. Jeśli na przykład skonfigurowany punkt końcowy aplikacji Google Chat to https://example.com/app/, pole audience w tokenie identyfikatora ma wartość https://example.com/app/.
Jest to zalecana metoda uwierzytelniania, jeśli punkt końcowy HTTP nie jest hostowany w usłudze obsługującej uwierzytelnianie oparte na IAM (np. Cloud Run).
Poniższe przykłady pokazują, jak za pomocą biblioteki klienta Google OAuth sprawdzić, czy token okaziciela został wydany przez Google dla Twojej aplikacji do obsługi czatu i czy jest przeznaczony dla punktu końcowego aplikacji:
Java
Python
Node.js
Powiązane artykuły
- Omówienie uwierzytelniania i autoryzacji w Google Workspace znajdziesz w artykule Uwierzytelnianie i autoryzacja.
- Ogólne informacje o uwierzytelnianiu i autoryzacji w Google Chat znajdziesz w artykule Uwierzytelnianie – omówienie.
- Skonfiguruj uwierzytelnianie i autoryzację za pomocą danych logowania użytkownika lub konta usługi.
Aplikacje do obsługi czatu, które nie są dodatkami: weryfikowanie próśb z Google Chat
Poniższa dokumentacja dotyczy aplikacji do Google Chat, które nie są dodatkami do Google Workspace. Aby przeprowadzić migrację aplikacji do czatu, która nie jest dodatkiem, przeczytaj artykuł Przekształcanie aplikacji do Google Chat w dodatek do Google Workspace.
W przypadku aplikacji do Google Chat, które nie są dodatkami skonfigurowanymi za pomocą adresu URL punktu końcowego HTTP w sekcji Ustawienia połączenia, typ tokena okaziciela i wartość pola audience zależą od typu odbiorców uwierzytelniania wybranego podczas konfigurowania aplikacji do Google Chat, a żądania są podpisywane przez wspólne konto usługi chat@system.gserviceaccount.com.
Uwierzytelnianie żądań za pomocą funkcji Cloud Run (aplikacje do obsługi czatu, które nie są dodatkami)
Jeśli logika funkcji jest zaimplementowana za pomocą funkcji Cloud Run, w polu Odbiorca uwierzytelniania ustawienia połączenia aplikacji Google Chat musisz wybrać Adres URL punktu końcowego HTTP i upewnić się, że adres URL punktu końcowego HTTP w konfiguracji odpowiada adresowi URL punktu końcowego funkcji Cloud Run.
Następnie musisz autoryzować konto usługi Google Chatchat@system.gserviceaccount.com jako wywołującego, wykonując te czynności:
Konsola
Po wdrożeniu funkcji lub usługi w Google Cloud:
W konsoli Google Cloud otwórz stronę Cloud Run:
Na liście usług Cloud Run kliknij pole wyboru obok funkcji odbierającej. (Nie klikaj samej funkcji).
U góry ekranu kliknij Uprawnienia. Otworzy się panel Uprawnienia.
Kliknij Dodaj podmiot zabezpieczeń.
W polu Nowe podmioty zabezpieczeń wpisz
chat@system.gserviceaccount.com.W menu Wybierz rolę wybierz rolę Cloud Run.
Wywołujący Cloud Run.
Kliknij Zapisz.
gcloud
Użyj polecenia gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'Zastąp RECEIVING_FUNCTION nazwą funkcji aplikacji do obsługi czatu w Google Chat.
Uwierzytelnianie żądań HTTP za pomocą tokena identyfikatora (aplikacje do obsługi czatu, które nie są dodatkami)
Jeśli w polu Authentication Audience (Odbiorcy uwierzytelniania) ustawienia połączenia aplikacji do czatu, która nie jest dodatkiem, jest ustawiona wartość HTTP endpoint URL (Adres URL punktu końcowego HTTP), token autoryzacji typu bearer w żądaniu jest podpisanym przez Google tokenem tożsamości OpenID Connect (OIDC) ID token.
Pole email ma wartość chat@system.gserviceaccount.com. Pole Authentication Audience (Odbiorcy uwierzytelniania) jest ustawione na adres URL, który został skonfigurowany w Google Chat do wysyłania żądań do aplikacji Google Chat, która nie jest dodatkiem. Jeśli na przykład skonfigurowany punkt końcowy aplikacji Google Chat to https://example.com/app/, pole Authentication Audience w tokenie identyfikatora ma wartość https://example.com/app/.
Poniższe przykłady pokazują, jak za pomocą biblioteki klienta Google OAuth sprawdzić, czy token okaziciela został wydany przez Google Chat i jest przeznaczony dla aplikacji do obsługi czatu, która nie jest dodatkiem.
Java
Python
Node.js
Uwierzytelnianie żądań za pomocą tokena JWT z numerem projektu (aplikacje do obsługi czatu, które nie są dodatkami)
Jeśli pole Authentication Audience (Odbiorcy uwierzytelniania) w ustawieniach połączenia aplikacji do czatu, która nie jest dodatkiem, ma wartość Project
Number, token autoryzacji typu bearer w żądaniu jest samodzielnie podpisany tokenem internetowym JSON (JWT), wydanym i podpisanym przez chat@system.gserviceaccount.com.
Pole audience jest ustawione na numer projektu Google Cloud, którego użyto do utworzenia aplikacji Google Chat, która nie jest dodatkiem. Jeśli na przykład numer projektu Cloud aplikacji do czatu to 1234567890, pole audience w tokenie JWT ma wartość 1234567890.
Te przykłady pokazują, jak za pomocą biblioteki klienta Google OAuth sprawdzić, czy token okaziciela został wydany przez Google Chat i jest przeznaczony dla Twojego projektu.