HTTP uç noktaları üzerine inşa edilmiş Google Chat uygulamaları için bu bölümde, uç noktanıza gelen 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 istek gönderir. İsteğin Google'dan geldiğini doğrulamak için Chat, uç noktanıza gönderilen her HTTPS isteğinin Authorization
başlığına bir bearer jetonu ekler. Ö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, Google tarafından üretilen bir kriptografik jetondur. Taşıyıcı jetonunun türü ve audience
alanının değeri, Chat uygulamasını yapılandırırken seçtiğiniz kimlik doğrulama kitlesine bağlıdır.
Chat uygulamanızı Cloud Functions veya Cloud Run'u kullanarak uyguladıysanız Cloud IAM, jeton doğrulamasını otomatik olarak yönetir. Google Chat hizmet hesabını yetkili bir başlatıcı olarak eklemeniz yeterlidir. Uygulamanız kendi HTTP sunucusunu uyguluyorsa açık kaynaklı bir Google API istemci kitaplığı kullanarak kimlik bilgisi taşıyıcı jetonunuzu 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, Chat uygulaması için doğrulanmıyorsa hizmetiniz isteğe bir HTTPS yanıt koduyla 401 (Unauthorized)
yanıt vermelidir.
Cloud Functions veya Cloud Run'u kullanarak isteklerin kimliğini doğrulama
İşlev mantığınız Cloud Functions veya Cloud Run kullanılarak uygulanıyorsa Chat uygulamasının bağlantı ayarındaki Kimlik Doğrulama Kitlesi alanında HTTP uç noktası URL'sini seçmeniz ve yapılandırmadaki HTTP uç noktası URL'sinin Cloud Functions veya Cloud Run uç noktasının URL'sine karşılık geldiğinden emin olmanız gerekir.
Ardından, Google Chat hizmet hesabını chat@system.gserviceaccount.com
bir başlatıcı olarak yetkilendirmeniz gerekir.
Aşağıdaki adımlarda, Cloud Functions'ın (1. nesil) nasıl kullanılacağı gösterilmektedir:
Konsol
İşlevinizi Google Cloud'a dağıttıktan sonra:
Google Cloud Console'da Cloud Functions sayfasına gidin:
Cloud Functions 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@system.gserviceaccount.com
girin.Bir rol seçin açılır menüsünden Cloud Functions > Cloud Functions Çağırıcı rolünü seçin.
Kaydet'i tıklayın.
gcloud
gcloud functions add-iam-policy-binding
komutunu kullanın:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
RECEIVING_FUNCTION
yerine Chat uygulamanızın işlevinin adını yazın.
Aşağıdaki adımlarda, Cloud Functions (2. nesil) veya Cloud Run hizmetlerinin nasıl kullanılacağı gösterilmektedir:
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@system.gserviceaccount.com
girin.Bir rol seçin açılır menüsünden Cloud Run > Cloud Run Çağırıcı rolünü seçin.
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ı yazın.
HTTP isteklerinin kimliğini bir kimlik jetonuyla doğrulama
Chat uygulamasının bağlantı ayarındaki Kimlik Doğrulama Kitlesi alanı HTTP uç nokta URL'si olarak ayarlanmışsa istekteki kimliği taşıyan yetkilendirme jetonu, Google tarafından imzalanmış bir OpenID Connect (OIDC) kimlik jetonudur.
email
alanı chat@system.gserviceaccount.com
olarak ayarlanmıştır.
Kimlik Doğrulama Kitlesi alanı, Google Chat'in Chat uygulamanıza istek göndermesi için yapılandırdığınız URL'ye ayarlanır. Örneğin, Chat 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.
HTTP uç noktanız IAM tabanlı kimlik doğrulamayı destekleyen bir hizmette (ör. Cloud Functions veya Cloud Run) barındırılmıyorsa önerilen kimlik doğrulama yöntemi budur. Bu yöntemi kullanan HTTP hizmetinizin, çalıştığı uç noktanın URL'si hakkında bilgi alması gerekir ancak Cloud proje numarası hakkında bilgi alması gerekmez.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak kimliği taşıyan jetonun Google Chat tarafından yayınlandığının ve uygulamanızı hedeflediğinin nasıl doğrulanacağı gösterilmektedir.
Java
Python
Node.js
Proje numarası JWT ile isteklerin kimliğini doğrulama
Chat uygulamasının bağlantı ayarının Kimlik Doğrulama Kitlesi alanı Project
Number
olarak ayarlanmışsa istekteki taşıyıcı yetkilendirme jetonu, chat@system.gserviceaccount.com
tarafından verilen ve imzalanan, kendi kendine imzalanmış bir JSON Web Jetonu (JWT) olur.
audience
alanı, Chat uygulamanızı oluşturmak için kullandığınız Google Cloud proje numarasına ayarlanır. Örneğin, Chat uygulamanızın Cloud proje numarası 1234567890
ise JWT'deki audience
alanı 1234567890
olur.
Bu kimlik doğrulama yöntemi yalnızca istekleri doğrulamak için HTTP uç noktası URL'si yerine Cloud proje numarasını kullanmayı tercih ediyorsanız önerilir. Örneğin, aynı Cloud projesi numarasını korurken uç nokta URL'sini zaman içinde değiştirmek istiyorsanız veya birden fazla Cloud projesi numarası için aynı uç noktayı kullanmak istiyorsanız ve audience
alanını Cloud projesi numaralarının listesiyle karşılaştırmak istiyorsanız.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak kimliği taşıyan jetonun Google Chat tarafından yayınlandığının ve projenizi hedeflediğinin nasıl doğrulanacağı 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 edinme başlıklı makaleyi inceleyin.
- Chat'te kimlik doğrulama ve yetkilendirmeye genel bakış için Kimlik doğrulamaya genel bakış başlıklı makaleyi inceleyin.
- Kimlik doğrulama ve yetkilendirmeyi kullanıcı kimlik bilgileri veya hizmet hesabı ile ayarlayın.