بالنسبة إلى تطبيقات Chat في Google Chat المستندة إلى نقاط نهاية HTTP، يوضّح هذا القسم كيفية التحقّق من أنّ الطلبات الموجّهة إلى نقطة النهاية واردة من Chat.
لإرسال أحداث التفاعل إلى نقطة النهاية الخاصة بتطبيق Chat، ترسل Google طلبات HTTPS إلى خدمتك. للتأكّد من أنّ الطلب وارد من Google، يضمِّن Chat رمز تعريف موقّعًا من Google بتنسيق OpenID Connect (OIDC) كـ رمز حامل مميز في عنوان Authorization لكل طلب HTTPS (وفي الحقل authorizationEventObject.systemIdToken من نص الطلب). على سبيل المثال:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
السلسلة AbCdEf123456 في المثال السابق هي رمز مميز للترخيص. يتم توقيع هذا الرمز المشفّر باستخدام حساب الخدمة الفريد لكل مشروع في تطبيق Chat (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com)، ويتم ضبط الحقل audience على عنوان URL لنقطة نهاية HTTP الذي تم إعداده لتطبيق Chat عند إعداد تطبيق Chat.
يمكنك نسخ عنوان البريد الإلكتروني لحساب الخدمة في تطبيق Chat من قسم إعدادات الربط في علامة التبويب الإعداد لواجهة برمجة التطبيقات Chat API في Google Cloud Console:
في Google Cloud Console، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > واجهات برمجة التطبيقات والخدمات المفعَّلة > Google Chat API > الإعدادات:
ضمن الميزات التفاعلية > إعدادات الربط، انسخ البريد الإلكتروني لحساب الخدمة (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).
إذا كنت قد نفّذت تطبيق Chat باستخدام دوال Cloud Run أو Cloud Run، تتولّى خدمة Cloud IAM عملية التحقّق من الرمز المميّز تلقائيًا عند منح حساب خدمة تطبيق Chat دور Cloud Run Invoker (roles/run.invoker).
إذا كان تطبيقك ينفِّذ خادم HTTP خاصًا به، يمكنك التحقّق من صحة رمز الحامل
باستخدام مكتبة عميل Google API مفتوحة المصدر:
- 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
إذا لم يتم التحقّق من صحة الرمز المميّز لتطبيق Chat، يجب أن ترد خدمتك على الطلب باستخدام رمز استجابة HTTPS 401 (Unauthorized).
المصادقة على الطلبات باستخدام دوال Cloud Run
إذا تم تنفيذ منطق الدالة باستخدام وظائف Cloud Run أو Cloud Run، تأكَّد من أنّ عناوين URL لنقاط نهاية HTTP التي تم إعدادها ضمن المشغّلات في إعدادات الربط في تطبيق Chat تتوافق مع عنوان URL لنقطة نهاية دالة Cloud Run.
بعد ذلك، عليك منح إذن الوصول إلى حساب الخدمة الخاص بتطبيق Chat
(service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com،
الذي تم نسخه من قسم إعدادات الاتصال في علامة التبويب
الإعدادات لواجهة برمجة التطبيقات Chat API) كمنفّذ باستخدام الخطوات التالية:
وحدة التحكّم
بعد نشر الدالة أو الخدمة على Google Cloud، اتّبِع الخطوات التالية:
في Google Cloud Console، انتقِل إلى صفحة Cloud Run:
في قائمة خدمات Cloud Run، انقر على مربّع الاختيار بجانب الدالة التي تتلقّى البيانات. (لا تنقر على الدالة نفسها).
انقر على الأذونات في أعلى الشاشة. يتم فتح لوحة الأذونات.
انقر على إضافة كيان أساسي.
في حقل المستخدمون الرئيسيون الجدد، أدخِل عنوان البريد الإلكتروني لحساب الخدمة في تطبيق Chat (
service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com).من قائمة اختيار دور، اختَر الدور Cloud Run.
Cloud Run Invoker
انقر على حفظ.
gcloud
استخدِم الأمر gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-gsuiteaddons.iam.gserviceaccount.com'غيِّر القيم في السلسلة على الشكل التالي:
RECEIVING_FUNCTION: اسم وظيفة تطبيق Chat.- استبدِل
PROJECT_NUMBERبرقم المشروع من عنوان البريد الإلكتروني لحساب الخدمة في تطبيق Chat.
المصادقة على طلبات HTTP باستخدام رمز تعريف
بالنسبة إلى نقاط نهاية HTTP، يكون رمز التفويض المميز في الطلب عبارة عن رمز تعريف بتوقيع Google من خلال معيار OpenID Connect (OIDC).
يتم ضبط الحقل email على عنوان البريد الإلكتروني لحساب الخدمة في تطبيق Chat (service-<var>PROJECT_NUMBER</var>@gcp-sa-gsuiteaddons.iam.gserviceaccount.com)، ويتم ضبط الحقل audience على عنوان URL لنقطة نهاية HTTP التي تم إعدادها لتلقّي الطلب. على سبيل المثال، إذا كانت نقطة النهاية التي تم ضبطها لتطبيق Chat هي https://example.com/app/، سيكون حقل audience في رمز التعريف https://example.com/app/.
هذه هي طريقة المصادقة المقترَحة إذا لم تكن نقطة نهاية HTTP مستضافة على خدمة تتيح المصادقة المستندة إلى إدارة الهوية وإمكانية الوصول (IAM) (مثل Cloud Run).
توضّح النماذج التالية كيفية التأكّد من أنّ رمز الدخول المميز قد أصدرته Google لتطبيق Chat واستهداف نقطة نهاية تطبيقك باستخدام مكتبة عميل Google OAuth:
جافا
Python
Node.js
المواضيع ذات الصلة
- للحصول على نظرة عامة حول المصادقة والتفويض في Google Workspace، يُرجى الاطّلاع على التعرّف على المصادقة والتفويض.
- للحصول على نظرة عامة حول المصادقة والتفويض في Chat، يُرجى الاطّلاع على نظرة عامة حول المصادقة.
- يمكنك إعداد المصادقة والتفويض باستخدام بيانات اعتماد المستخدم أو حساب خدمة.
تطبيقات Chat التي ليست إضافات: التحقّق من الطلبات الواردة من Google Chat
تنطبق المستندات التالية على تطبيقات Chat التي ليست إضافات Google Workspace. لنقل تطبيق Chat ليس إضافة، يُرجى الاطّلاع على تحويل تطبيق Google Chat إلى إضافة Google Workspace.
بالنسبة إلى تطبيقات Chat التي ليست إضافات تم ضبطها باستخدام
عنوان URL لنقطة نهاية HTTP ضمن إعدادات الربط، يعتمد نوع رمز
المصادقة المميزة وقيمة الحقل audience على نوع
الجمهور المستهدف للمصادقة الذي اخترته عند
ضبط تطبيق Chat،
ويتم توقيع الطلبات بواسطة حساب الخدمة المشترك
chat@system.gserviceaccount.com.
المصادقة على الطلبات باستخدام دوال Cloud Run (تطبيقات Chat التي ليست إضافات)
إذا تم تنفيذ منطق الدالة باستخدام دوال Cloud Run، عليك اختيار عنوان URL لنقطة نهاية HTTP في حقل الجمهور المستهدف للمصادقة ضمن إعدادات الربط في تطبيق Chat، والتأكّد من أنّ عنوان URL لنقطة نهاية HTTP في الإعدادات يتطابق مع عنوان URL لنقطة نهاية دالة Cloud Run.
بعد ذلك، عليك تفويض حساب خدمة Google Chat
chat@system.gserviceaccount.com كجهة استدعاء باتّباع الخطوات التالية:
وحدة التحكّم
بعد نشر الدالة أو الخدمة على Google Cloud، اتّبِع الخطوات التالية:
في Google Cloud Console، انتقِل إلى صفحة Cloud Run:
في قائمة خدمات Cloud Run، انقر على مربّع الاختيار بجانب الدالة التي تتلقّى البيانات. (لا تنقر على الدالة نفسها).
انقر على الأذونات في أعلى الشاشة. يتم فتح لوحة الأذونات.
انقر على إضافة كيان أساسي.
في حقل الجهات الرئيسية الجديدة، أدخِل
chat@system.gserviceaccount.com.من قائمة اختيار دور، اختَر الدور Cloud Run.
Cloud Run Invoker
انقر على حفظ.
gcloud
استخدِم الأمر gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'استبدِل RECEIVING_FUNCTION باسم دالة تطبيق Chat.
المصادقة على طلبات HTTP باستخدام رمز مميّز للمعرّف (تطبيقات Chat التي ليست إضافات)
إذا تم ضبط حقل الجمهور المستهدف للمصادقة في إعدادات الربط لتطبيق Chat الذي ليس إضافة على عنوان URL لنقطة نهاية HTTP، سيكون رمز المصادقة المميز في الطلب رمز تعريف OpenID Connect (OIDC) موقّعًا من Google.
تم ضبط الحقل email على chat@system.gserviceaccount.com. يتم ضبط حقل الجمهور المستهدف للمصادقة على عنوان URL الذي أعددت Google Chat لإرسال الطلبات إلى تطبيق Chat الذي ليس إضافة. على سبيل المثال، إذا كانت نقطة النهاية التي تم ضبطها لتطبيق Chat هي https://example.com/app/، سيكون حقل شريحة جمهور المصادقة في رمز التعريف https://example.com/app/.
توضّح النماذج التالية كيفية التأكّد من أنّ رمز الدخول المميز قد تم إصداره من خلال Google Chat وأنّه يستهدف تطبيق Chat الذي لا يمثّل إضافة باستخدام مكتبة عميل Google OAuth.
جافا
Python
Node.js
المصادقة على الطلبات باستخدام رمز JWT لرقم المشروع (تطبيقات Chat التي ليست إضافات)
إذا تم ضبط حقل الجمهور المستهدف للمصادقة في إعدادات الربط لتطبيق Chat الذي ليس إضافة على Project
Number، سيكون رمز التفويض المميز في الطلب رمز JSON مميزًا للويب (JWT) موقّعًا ذاتيًا،
صادرًا وموقّعًا من chat@system.gserviceaccount.com.
يتم ضبط الحقل audience على رقم مشروع Google Cloud الذي استخدمته لإنشاء تطبيق Chat غير إضافي. على سبيل المثال، إذا كان رقم مشروع على السحابة الإلكترونية لتطبيق Chat هو 1234567890، سيكون الحقل audience في رمز JWT هو 1234567890.
توضّح النماذج التالية كيفية التحقّق من أنّ الرمز المميز لحامل التفويض صادر عن Google Chat وموجّه إلى مشروعك باستخدام مكتبة عميل Google OAuth.