W przypadku aplikacji Google Chat opartych na punktach końcowych HTTP w tej sekcji wyjaśniamy, jak sprawdzić, czy żądania do punktu końcowego pochodzą z Chatu.
Aby wysyłać zdarzenia interakcji do punktu końcowego aplikacji Google Chat, Google wysyła żądania do Twojej usługi. Aby potwierdzić, że żądanie pochodzi z Google, Chat dołącza token dostępu do nagłówka Authorization
każdego żądania HTTPS wysyłanego do Twojego punktu końcowego. Przykład:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Ciąg znaków AbCdEf123456
w poprzednim przykładzie to token autoryzacji typu bearer. Jest to token kryptograficzny wygenerowany przez Google. Typ tokena dostępu i wartość pola audience
zależą od typu odbiorców uwierzytelniania wybranego podczas konfigurowania aplikacji Chat.
Jeśli aplikacja Chat została wdrożona przy użyciu Cloud Functions lub Cloud Run, Cloud IAM automatycznie obsługuje weryfikację tokena. Wystarczy dodać konto usługi Google Chat jako autoryzowanego wywołującego. Jeśli Twoja aplikacja implementuje własny serwer HTTP, możesz zweryfikować token dostępu za pomocą biblioteki klienta interfejsu 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 do obsługi czatu, usługa powinna odpowiedzieć na żądanie kodem odpowiedzi HTTPS 401 (Unauthorized)
.
Uwierzytelnianie żądań za pomocą Cloud Functions lub Cloud Run
Jeśli logika funkcji jest zaimplementowana przy użyciu Cloud Functions lub Cloud Run, w polu Odbiorcy uwierzytelniania ustawienia połączenia aplikacji do obsługi 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 Cloud Functions lub Cloud Run.
Następnie musisz autoryzować konto usługi Google Chatchat@system.gserviceaccount.com
jako wywołującego.
Poniżej znajdziesz instrukcje korzystania z Cloud Functions (1 generacji):
Konsola
Po wdrożeniu funkcji w Google Cloud:
W konsoli Google Cloud otwórz stronę Cloud Functions:
Na liście Cloud Functions 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 Functions > Wywołujący Cloud Functions.
Kliknij Zapisz.
gcloud
Użyj polecenia gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
Zastąp RECEIVING_FUNCTION
nazwą funkcji aplikacji do obsługi czatu.
Poniższe kroki pokazują, jak korzystać z usług Cloud Functions (2 generacji) lub Cloud Run:
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.
Uwierzytelnianie żądań HTTP za pomocą tokena identyfikatora
Jeśli pole Odbiorcy uwierzytelniania w ustawieniu połączenia aplikacji Google Chat ma wartość Adres URL punktu końcowego HTTP, token autoryzacji typu bearer w żądaniu jest podpisanym przez Google tokenem tożsamości OpenID Connect (OIDC).
Pole email
ma wartość chat@system.gserviceaccount.com
. Pole Authentication Audience jest ustawione na adres URL, który został skonfigurowany w Google Chat do wysyłania żądań do aplikacji Google Chat. Jeśli na przykład skonfigurowany punkt końcowy aplikacji Google Chat to https://example.com/app/
, pole Authentication Audience w tokenie identyfikatora to 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 Functions lub Cloud Run). W przypadku tej metody usługa HTTP potrzebuje informacji o adresie URL punktu końcowego, w którym jest uruchomiona, ale nie potrzebuje informacji o numerze projektu w Google Cloud.
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 Twojej aplikacji.
Java
Python
Node.js
Uwierzytelnianie żądań za pomocą tokena JWT z numerem projektu
Jeśli w polu Authentication Audience (Odbiorcy uwierzytelniania) w ustawieniu połączenia aplikacji do obsługi czatu jest ustawiona wartość Project
Number
, token autoryzacji typu bearer w żądaniu jest samodzielnie podpisanym 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. Jeśli na przykład numer projektu Cloud aplikacji Google Chat to 1234567890
, pole audience
w JWT ma wartość 1234567890
.
Ta metoda uwierzytelniania jest zalecana tylko wtedy, gdy wolisz używać numeru projektu w Google Cloud do weryfikowania żądań zamiast adresu URL punktu końcowego HTTP. Może to być przydatne np. wtedy, gdy chcesz z czasem zmieniać adres URL punktu końcowego, zachowując ten sam numer projektu Google Cloud, lub gdy chcesz używać tego samego punktu końcowego w przypadku wielu numerów projektów Google Cloud i porównywać pole audience
z listą numerów projektów Google Cloud.
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 Twojego projektu.
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.