برای برنامههای گوگل چت که بر روی نقاط پایانی HTTP ساخته شدهاند، این بخش نحوه تأیید اینکه درخواستهای ارسالی به نقطه پایانی شما از Chat میآیند را توضیح میدهد.
برای ارسال رویدادهای تعاملی به نقطه پایانی برنامه چت شما، گوگل درخواستهایی را به سرویس شما ارسال میکند. برای تأیید اینکه درخواست از گوگل میآید، چت یک توکن حامل را در هدر Authorization هر درخواست HTTPS به نقطه پایانی شما قرار میدهد. به عنوان مثال:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
رشته AbCdEf123456 در مثال قبلی، توکن مجوز حامل است. این یک توکن رمزنگاری است که توسط گوگل تولید شده است. نوع توکن حامل و مقدار فیلد audience به نوع مخاطب احراز هویتی که هنگام پیکربندی برنامه چت انتخاب کردهاید، بستگی دارد.
اگر برنامه چت خود را با استفاده از توابع Cloud Run پیادهسازی کردهاید، Cloud IAM تأیید توکن را به طور خودکار انجام میدهد. شما باید حساب سرویس Google Chat را به عنوان یک فراخوانیکننده مجاز اضافه کنید. اگر برنامه شما سرور HTTP مخصوص به خود را پیادهسازی میکند، میتوانید توکن حامل خود را با استفاده از یک کتابخانه کلاینت Google API متنباز تأیید کنید:
- جاوا : https://github.com/google/google-api-java-client
- پایتون : https://github.com/google/google-api-python-client
- نود جی اس : https://github.com/google/google-api-nodejs-client
- دات نت : https://github.com/google/google-api-dotnet-client
اگر توکن برای برنامه چت تأیید نشود، سرویس شما باید با کد پاسخ HTTPS 401 (Unauthorized) به درخواست پاسخ دهد.
درخواستها را با استفاده از توابع Cloud Run تأیید کنید
اگر منطق تابع شما با استفاده از توابع Cloud Run پیادهسازی شده است، باید در قسمت Authentication Audience از تنظیمات اتصال برنامه چت، HTTP endpoint URL را انتخاب کنید و مطمئن شوید که HTTP endpoint URL در پیکربندی با URL تابع Cloud Run مطابقت دارد.
سپس، باید با استفاده از مراحل زیر، حساب سرویس چت گوگل chat@system.gserviceaccount.com را به عنوان یک فراخوانیکننده مجاز کنید:
کنسول
پس از استقرار عملکرد یا سرویس خود در Google Cloud:
در کنسول گوگل کلود، به صفحه Cloud Run بروید:
در لیست سرویسهای Cloud Run، روی کادر انتخاب کنار تابع دریافت کلیک کنید. (روی خود تابع کلیک نکنید.)
روی مجوزها در بالای صفحه کلیک کنید. پنل مجوزها باز میشود.
روی افزودن مدیر اصلی کلیک کنید.
در فیلد «مدیران جدید» ،
chat@system.gserviceaccount.comرا وارد کنید.از منوی انتخاب نقش ، نقش Cloud Run را انتخاب کنید
اجرای ابری Invoker .
روی ذخیره کلیک کنید.
جیکلاود
از دستور gcloud functions add-invoker-policy-binding استفاده کنید:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' به جای RECEIVING_FUNCTION نام تابع برنامه چت خود را قرار دهید.
درخواستهای HTTP را با یک شناسه توکن (ID Token) تأیید اعتبار کنید
اگر فیلد مخاطب احراز هویت در تنظیمات اتصال برنامه چت روی HTTP endpoint URL تنظیم شده باشد، توکن مجوز حامل در درخواست، یک توکن شناسه OpenID Connect (OIDC) امضا شده توسط گوگل است. فیلد email روی chat@system.gserviceaccount.com تنظیم شده است. فیلد مخاطب احراز هویت روی URL ای تنظیم شده است که شما Google Chat را برای ارسال درخواستها به برنامه چت خود پیکربندی کردهاید. به عنوان مثال، اگر نقطه پایانی پیکربندی شده برنامه چت شما https://example.com/app/ باشد، فیلد مخاطب احراز هویت در توکن شناسه https://example.com/app/ خواهد بود.
این روش احراز هویت توصیه شده است اگر نقطه پایانی HTTP شما روی سرویسی که از احراز هویت مبتنی بر IAM پشتیبانی میکند (مانند Cloud Run) میزبانی نمیشود. با استفاده از این روش، سرویس HTTP شما به اطلاعاتی در مورد URL نقطه پایانی که در آن اجرا میشود نیاز دارد، اما به اطلاعاتی در مورد شماره پروژه Cloud نیازی ندارد.
نمونههای زیر نشان میدهند که چگونه میتوان با استفاده از کتابخانه کلاینت Google OAuth، تأیید کرد که توکن حامل توسط Google Chat صادر شده و برنامه شما را هدف قرار داده است.
جاوا
پایتون
نود جی اس
درخواستها را با شماره پروژه JWT تأیید اعتبار کنید
اگر فیلد «مخاطب احراز هویت» در تنظیمات اتصال برنامه چت روی « Project Number » تنظیم شده باشد، توکن مجوز حامل در درخواست، یک توکن وب JSON (JWT) خودامضا شده است که توسط chat@system.gserviceaccount.com صادر و امضا شده است. فیلد audience روی شماره پروژه Google Cloud که برای ساخت برنامه چت خود استفاده کردهاید تنظیم شده است. برای مثال، اگر شماره پروژه Cloud برنامه چت شما 1234567890 باشد، فیلد audience در JWT 1234567890 خواهد بود.
این روش احراز هویت فقط در صورتی توصیه میشود که ترجیح میدهید از شماره پروژه ابری برای تأیید درخواستها به جای آدرس اینترنتی نقطه پایانی HTTP استفاده کنید. به عنوان مثال، اگر میخواهید آدرس اینترنتی نقطه پایانی را به مرور زمان تغییر دهید در حالی که شماره پروژه ابری یکسانی را حفظ کنید، یا اگر میخواهید از یک نقطه پایانی برای چندین شماره پروژه ابری استفاده کنید و میخواهید فیلد audience را با لیستی از شماره پروژههای ابری مقایسه کنید.
نمونههای زیر نشان میدهند که چگونه با استفاده از کتابخانه کلاینت Google OAuth، تأیید کنید که توکن حامل توسط Google Chat صادر شده و برای پروژه شما در نظر گرفته شده است.
جاوا
پایتون
نود جی اس
مباحث مرتبط
- برای مرور کلی در مورد احراز هویت و مجوز در Google Workspace، به بخش «درباره احراز هویت و مجوز بیشتر بدانید» مراجعه کنید.
- برای مرور کلی در مورد احراز هویت و مجوز در چت، به مرور کلی احراز هویت مراجعه کنید.
- احراز هویت و مجوز را با اعتبارنامههای کاربر یا یک حساب سرویس تنظیم کنید.