Đối với các ứng dụng Google Chat được xây dựng trên các điểm cuối HTTP, phần này giải thích cách xác minh rằng các yêu cầu gửi đến điểm cuối của bạn là từ Chat.
Để gửi các sự kiện tương tác đến điểm cuối của ứng dụng Chat, Google sẽ gửi yêu cầu đến dịch vụ của bạn. Để xác minh rằng yêu cầu đang
đến từ Google, Chat sẽ đưa
mã thông báo người mang
vào tiêu đề Authorization của mọi yêu cầu HTTPS gửi đến điểm cuối của bạn. Ví dụ:
POST
Host: yourappurl.com
Authorization: Bearer AbCdEf123456
Content-Type: application/json
User-Agent: Google-Dynamite
Chuỗi AbCdEf123456 trong ví dụ trước là mã thông báo uỷ quyền người mang. Đây là một mã thông báo mật mã do Google tạo. Loại mã thông báo người mang
và giá trị của trường audience phụ thuộc vào loại đối tượng xác thực
mà bạn đã chọn khi
định cấu hình ứng dụng Chat.
Nếu bạn đã triển khai ứng dụng Chat bằng các hàm Cloud Run, thì Cloud IAM sẽ tự động xử lý quy trình xác minh mã thông báo. Bạn phải thêm tài khoản dịch vụ Google Chat làm trình gọi được uỷ quyền. Nếu ứng dụng triển khai máy chủ HTTP riêng, bạn có thể xác minh mã thông báo người mang bằng thư viện ứng dụng API của Google nguồn mở:
- 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
Nếu mã thông báo không xác minh được cho ứng dụng Chat, thì dịch vụ của bạn phải phản hồi yêu cầu bằng mã phản hồi HTTPS 401 (Unauthorized).
Xác thực yêu cầu bằng các hàm Cloud Run
Nếu logic hàm của bạn được triển khai bằng các hàm Cloud Run, thì bạn phải chọn HTTP endpoint URL trong trường Authentication Audience của chế độ cài đặt kết nối ứng dụng Chat và đảm bảo rằng URL điểm cuối HTTP trong cấu hình tương ứng với URL của điểm cuối hàm Cloud Run.
Sau đó, bạn cần uỷ quyền cho tài khoản dịch vụ Google Chat chat@system.gserviceaccount.com làm trình gọi bằng cách thực hiện theo các bước sau:
Giao diện dòng lệnh
Sau khi triển khai hàm hoặc dịch vụ của bạn lên Google Cloud:
Trong bảng điều khiển Cloud, hãy chuyển đến trang Cloud Run:
Trong danh sách dịch vụ Cloud Run, hãy nhấp vào hộp kiểm bên cạnh hàm nhận. (Không nhấp vào chính hàm đó.)
Nhấp vào Permissions (Quyền) ở đầu màn hình. Bảng điều khiển Permissions (Quyền) sẽ mở ra.
Nhấp vào Add principal (Thêm thực thể chính).
Trong trường New principals (Thực thể chính mới), hãy nhập
chat@system.gserviceaccount.com.Trong trình đơn Select a role (Chọn một vai trò), hãy chọn vai trò Cloud Run
Cloud Run Invoker (Trình gọi Cloud Run).
Nhấp vào Save (Lưu).
gcloud
Sử dụng lệnh gcloud functions add-invoker-policy-binding:
gcloud functions add-invoker-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com'Thay thế RECEIVING_FUNCTION bằng tên hàm của ứng dụng Chat.
Xác thực yêu cầu HTTP bằng Mã thông báo nhận dạng
Nếu trường Đối tượng xác thực của chế độ cài đặt kết nối ứng dụng Chat
được đặt thành
HTTP endpoint URL,
thì mã thông báo uỷ quyền người mang trong yêu cầu là mã thông báo nhận dạng OpenID Connect
(OIDC)
do Google ký.
Trường email được đặt thành chat@system.gserviceaccount.com. Trường Authentication Audience (Đối tượng xác thực) được đặt thành URL mà bạn đã định cấu hình Google Chat để gửi yêu cầu đến ứng dụng Chat. Ví dụ: nếu điểm cuối đã định cấu hình của ứng dụng Chat là https://example.com/app/, thì trường Authentication Audience (Đối tượng xác thực) trong mã thông báo nhận dạng là https://example.com/app/.
Đây là phương thức xác thực được đề xuất nếu điểm cuối HTTP của bạn không được lưu trữ trên một dịch vụ hỗ trợ xác thực dựa trên IAM (chẳng hạn như Cloud Run). Khi sử dụng phương thức này, dịch vụ HTTP của bạn cần thông tin về URL của điểm cuối nơi dịch vụ đang chạy, nhưng không cần thông tin về số dự án trên đám mây.
Các mẫu sau đây cho biết cách xác minh rằng mã thông báo người mang do Google Chat phát hành và nhắm đến ứng dụng của bạn bằng thư viện ứng dụng OAuth của Google.
Java
Python
Node.js
Xác thực yêu cầu bằng JWT Số dự án
Nếu trường Đối tượng xác thực của chế độ cài đặt kết nối ứng dụng Chat
được đặt thành Project
Number, thì mã thông báo uỷ quyền người mang trong yêu cầu là Mã thông báo web JSON (JWT) tự ký
,
do chat@system.gserviceaccount.com phát hành và ký.
Trường audience được đặt thành số dự án trên đám mây của Google Cloud mà bạn đã dùng để xây dựng ứng dụng Chat. Ví dụ: nếu số dự án trên đám mây của ứng dụng Chat là 1234567890, thì trường audience trong JWT là 1234567890.
Bạn chỉ nên sử dụng phương thức xác thực này nếu muốn dùng số dự án trên đám mây để xác minh các yêu cầu thay vì URL điểm cuối HTTP. Ví dụ: nếu bạn muốn thay đổi URL điểm cuối theo thời gian trong khi vẫn giữ nguyên số dự án trên đám mây hoặc nếu bạn muốn sử dụng cùng một điểm cuối cho nhiều số dự án trên đám mây và muốn so sánh trường audience với danh sách số dự án trên đám mây.
Các mẫu sau đây cho biết cách xác minh rằng mã thông báo người mang do Google Chat phát hành và nhắm đến dự án của bạn bằng thư viện ứng dụng OAuth của Google.
Java
Python
Node.js
Chủ đề có liên quan
- Để biết thông tin tổng quan về quy trình xác thực và uỷ quyền trong Google Workspace, hãy xem Tìm hiểu về quy trình xác thực và uỷ quyền.
- Để biết thông tin tổng quan về quy trình xác thực và uỷ quyền trong Chat, hãy xem bài viết Tổng quan về quy trình xác thực.
- Thiết lập quy trình xác thực và uỷ quyền bằng thông tin đăng nhập của người dùng hoặc tài khoản dịch vụ.