HTTP uç noktaları üzerinde oluşturulan Google Chat uygulamaları için bu bölümde, uç noktanıza yapılan isteklerin Chat'ten geldiğini nasıl doğrulayacağınız açıklanmaktadır.
Google, etkileşim etkinliklerini Chat uygulamanızın uç noktasına göndermek için hizmetinize HTTPS istekleri gönderir. İsteğin Google'dan geldiğini doğrulamak için Chat, her HTTPS isteğinin Authorization üstbilgisinde (ve istek gövdesinin authorizationEventObject.systemIdToken alanında) hamiline ait jeton olarak Google imzalı bir OpenID Connect (OIDC) kimlik jetonu içerir. Örneğin:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Önceki örnekteki AbCdEf123456 dizesi, taşıyıcı yetkilendirme jetonudur. Bu kriptografik jeton, Chat uygulamanızın proje başına benzersiz hizmet hesabı (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com) tarafından imzalanır ve audience alanı, Chat uygulamasını yapılandırırken Chat uygulamanız için yapılandırılan HTTP uç nokta URL'sine ayarlanır.
Google Cloud Console'daki Chat API Yapılandırma sekmesinin Bağlantı ayarları bölümünden Chat uygulamanızın hizmet hesabı e-posta adresini kopyalayabilirsiniz:
Google Cloud Console'da Menü > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler > Google Chat API > Yapılandırma'ya gidin:
Etkileşimli özellikler > Bağlantı ayarları bölümünde Hizmet hesabı e-posta adresini (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com) kopyalayın.
Chat uygulamanızı Cloud Run işlevlerini veya Cloud Run'ı kullanarak uyguladıysanız Chat uygulamasının hizmet hesabına Cloud Run Invoker (roles/run.invoker) rolünü verdiğinizde Cloud IAM, jeton doğrulamayı otomatik olarak gerçekleştirir.
Uygulamanız kendi HTTP sunucusunu uyguluyorsa hamiline ait jetonu açık kaynaklı bir Google API istemci kitaplığı kullanarak doğrulayabilirsiniz:
- 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
Jeton, Sohbet uygulamasında doğrulanmazsa hizmetiniz isteğe bir HTTPS yanıt koduyla 401 (Unauthorized) yanıt vermelidir.
Cloud Run işlevlerini kullanarak isteklerin kimliğini doğrulama
İşlev mantığınız Cloud Run işlevleri veya Cloud Run kullanılarak uygulanıyorsa Chat uygulaması bağlantı ayarlarındaki Tetikleyiciler bölümünde yapılandırılan HTTP uç nokta URL'lerinin Cloud Run işlevi uç noktanızın URL'sine karşılık geldiğinden emin olun.
Ardından, aşağıdaki adımları uygulayarak Chat uygulamanızın hizmet hesabını
(service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com,
Chat API'nin Yapılandırma sekmesindeki Bağlantı ayarları bölümünden kopyalanmıştır) çağıran olarak yetkilendirin:
Konsol
İşlevinizi veya hizmetinizi Google Cloud'a dağıttıktan sonra:
Google Cloud Console'da Cloud Run sayfasına gidin:
Cloud Run hizmetleri listesinde, alıcı işlevin yanındaki onay kutusunu tıklayın. (İşlevin kendisini tıklamayın.)
Ekranın üst kısmındaki İzinler'i tıklayın. İzinler paneli açılır.
Ana hesap ekle'yi tıklayın.
Yeni ana hesaplar alanına, Chat uygulamanızın hizmet hesabı e-posta adresini (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com) girin.Rol seç menüsünden Cloud Run rolünü seçin.
Cloud Run Invoker.
Kaydet'i tıklayın.
gcloud
gcloud functions add-invoker-policy-binding komutunu kullanın:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-gsuiteaddons.iam.gserviceaccount.com'Aşağıdakini değiştirin:
RECEIVING_FUNCTION: Sohbet uygulamanızın işlevinin adı.PROJECT_NUMBER: Chat uygulamanızın hizmet hesabı e-posta adresindeki proje numarası.
HTTP isteklerinin kimliğini kimlik jetonuyla doğrulama
HTTP uç noktaları için, isteğin taşıyıcı yetkilendirme jetonu, Google tarafından imzalanmış bir OpenID Connect (OIDC) kimlik jetonudur.
email alanı, sohbet uygulamanızın hizmet hesabı e-posta adresi (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com) olarak ayarlanır. audience alanı ise isteği alacak şekilde yapılandırılmış HTTP uç nokta URL'si olarak ayarlanır. Örneğin, Chat uygulamanızın yapılandırılmış uç noktası https://example.com/app/ ise kimlik jetonundaki audience alanı https://example.com/app/ olur.
HTTP uç noktanız IAM tabanlı kimlik doğrulamayı destekleyen bir hizmette (ör. Cloud Run) barındırılmıyorsa bu kimlik doğrulama yöntemi önerilir.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığını kullanarak hamiline ait jetonun Google tarafından Chat uygulamanız için verildiğini ve uygulamanızın uç noktasını hedeflediğini nasıl doğrulayacağınız gösterilmektedir:
Java
Python
Node.js
İlgili konular
- Google Workspace'te kimlik doğrulama ve yetkilendirmeye genel bakış için Kimlik doğrulama ve yetkilendirme hakkında bilgi başlıklı makaleyi inceleyin.
- Chat'te kimlik doğrulama ve yetkilendirmeye genel bir bakış için Kimlik doğrulama genel bakışı başlıklı makaleyi inceleyin.
- Kullanıcı kimlik bilgileri veya hizmet hesabı ile kimlik doğrulama ve yetkilendirme ayarlayın.
Eklenti olmayan Chat uygulamaları: Google Chat'ten gelen istekleri doğrulama
Aşağıdaki belgeler, Google Workspace eklentisi olmayan Chat uygulamaları için geçerlidir. Eklenti olmayan bir Chat uygulamasını taşımak için Google Chat uygulamasını Google Workspace eklentisine dönüştürme başlıklı makaleyi inceleyin.
Cloud Run işlevlerini kullanarak isteklerin kimliğini doğrulama (eklenti olmayan Chat uygulamaları)
İşlev mantığınız Cloud Run işlevleri kullanılarak uygulanıyorsa Chat uygulaması bağlantı ayarının Kimlik Doğrulama Hedef Kitlesi alanında HTTP uç noktası URL'si'ni seçmeniz ve yapılandırmadaki HTTP uç noktası URL'sinin Cloud Run işlevi uç noktasının URL'sine karşılık geldiğinden emin olmanız gerekir.
Ardından, aşağıdaki adımları uygulayarak Google Chat hizmet hesabını
chat@system.gserviceaccount.com çağıran olarak yetkilendirmeniz gerekir:
Konsol
İşlevinizi veya hizmetinizi Google Cloud'a dağıttıktan sonra:
Google Cloud Console'da Cloud Run sayfasına gidin:
Cloud Run hizmetleri listesinde, alıcı işlevin yanındaki onay kutusunu tıklayın. (İşlevin kendisini tıklamayın.)
Ekranın üst kısmındaki İzinler'i tıklayın. İzinler paneli açılır.
Ana hesap ekle'yi tıklayın.
New principals (Yeni ana hesaplar) alanına
chat@system.gserviceaccount.comgirin.Rol seç menüsünden Cloud Run rolünü seçin.
Cloud Run Invoker.
Kaydet'i tıklayın.
gcloud
gcloud functions add-invoker-policy-binding komutunu kullanın:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'RECEIVING_FUNCTION yerine Chat uygulamanızın işlevinin adını girin.
HTTP isteklerinin kimliğini kimlik jetonuyla doğrulama (eklenti olmayan Chat uygulamaları)
Eklenti olmayan bir sohbet uygulamasının bağlantı ayarının Kimlik Doğrulama Hedef Kitlesi alanı HTTP uç nokta URL'si olarak ayarlanmışsa isteğin taşıyıcı yetkilendirme jetonu, Google tarafından imzalanmış bir OpenID Connect (OIDC) kimlik jetonudur.
email alanı chat@system.gserviceaccount.com olarak ayarlanır. Kimlik Doğrulama Kitlesi alanı, Google Chat'i eklenti olmayan Chat uygulamanıza istek gönderecek şekilde yapılandırdığınız URL olarak ayarlanır. Örneğin, sohbet uygulamanızın yapılandırılmış uç noktası https://example.com/app/ ise kimlik jetonundaki Kimlik Doğrulama Kitlesi alanı https://example.com/app/ olur.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak hamiline ait jetonun Google Chat tarafından verildiği ve eklenti olmayan Chat uygulamanızı hedeflediği nasıl doğrulanacağı gösterilmektedir.
Java
Python
Node.js
İsteklerin kimliğini proje numarası JWT ile doğrulama (eklenti olmayan Chat uygulamaları)
Eklenti olmayan Chat uygulamasının Kimlik Doğrulama Hedef Kitlesi alanı bağlantı ayarı Project
Number olarak ayarlanırsa isteğin taşıyıcı yetkilendirme jetonu, chat@system.gserviceaccount.com tarafından verilen ve imzalanan, kendi kendine imzalanmış bir JSON Web Token (JWT) olur.
audience alanı, eklenti olmayan Chat uygulamanızı oluşturmak için kullandığınız Google Cloud proje numarası olarak ayarlanır. Örneğin, sohbet uygulamanızın Cloud proje numarası 1234567890 ise JWT'deki audience alanı 1234567890 olur.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak hamiline ait jetonun Google Chat tarafından verilip verilmediği ve projenizi hedefleyip hedeflemediğinin nasıl doğrulanacağı gösterilmektedir.