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 istek gönderir. İsteğin Google'dan geldiğini doğrulamak için Chat, uç noktanıza yapılan her HTTPS isteğinin Authorization
başlığına bir taşıyıcı jeton ekler. Örneğin:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Yukarıdaki örnekte AbCdEf123456
dizesi, taşıyıcı yetkilendirme jetonudur. Bu, Google tarafından üretilen bir şifreleme jetonudur. Bearer jetonunun türü ve audience
alanının değeri, Chat uygulamasını yapılandırırken seçtiğiniz kimlik doğrulama kitlesinin türüne bağlıdır.
Chat uygulamanızı Cloud Functions veya Cloud Run kullanarak uyguladıysanız Cloud IAM, jeton doğrulama işlemini otomatik olarak gerçekleştirir. Google Chat hizmet hesabını yetkili çağıran olarak eklemeniz yeterlidir. Uygulamanız kendi HTTP sunucusunu uyguluyorsa taşıyıcı jetonunuzu 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ı için doğrulanmazsa hizmetiniz isteğe bir HTTPS yanıt koduyla yanıt vermelidir 401 (Unauthorized)
.
Cloud Functions veya Cloud Run kullanarak isteklerin kimliğini doğrulama
Ardından, Google Chat hizmet hesabını
chat@system.gserviceaccount.com
çağıran 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.Rol seçin açılır menüsünden Cloud Functions > Cloud Functions Invoker 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 Invoker 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 isteklerini kimlik jetonuyla doğrulama
Sohbet uygulaması bağlantı ayarının Kimlik Doğrulama Hedef Kitlesi alanı HTTP uç nokta URL'si olarak ayarlanırsa 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. Authentication Audience (Kimlik Doğrulama Hedef Kitlesi) alanı, Google Chat'i Chat uygulamanıza istek gönderecek şekilde yapılandırdığınız URL olarak ayarlanır. Örneğin, Chat uygulamanızın yapılandırılmış uç noktası https://example.com/app/
ise kimlik jetonundaki Authentication Audience 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 bu kimlik doğrulama yöntemi önerilir. Bu yöntemi kullanırken HTTP hizmetinizin, çalıştığı uç noktanın URL'si hakkında bilgiye ihtiyacı vardır ancak Cloud projesi numarası hakkında bilgiye ihtiyacı yoktur.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak taşıyıcı jetonun Google Chat tarafından verilip verilmediği ve uygulamanızı hedefleyip hedeflemediğinin nasıl doğrulanacağı gösterilmektedir.
Java
Python
Node.js
İsteklerin kimliğini proje numarası JWT ile doğrulama
Sohbet uygulaması bağlantı ayarının Kimlik Doğrulama Hedef Kitlesi alanı Project
Number
olarak ayarlanmışsa isteğin 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ı olarak 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 projesi numarasını kullanmayı tercih ediyorsanız önerilir. Örneğin, aynı Cloud proje numarasını korurken uç nokta URL'sini zaman içinde değiştirmek istiyorsanız veya birden fazla Cloud proje numarası için aynı uç noktayı kullanmak ve audience
alanını bir Cloud proje numaraları listesiyle karşılaştırmak istiyorsanız.
Aşağıdaki örneklerde, Google OAuth istemci kitaplığı kullanılarak taşıyıcı jetonun Google Chat tarafından verildiği 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 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.
- Kimlik doğrulama ve yetkilendirmeyi kullanıcı kimlik bilgileri veya hizmet hesabı ile ayarlayın.