Đối với các ứng dụng Google Chat được xây dựng trên đ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 đến điểm cuối của bạn đến 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 tới dịch vụ của bạn. Để xác minh rằng yêu cầu đó là của Google, Chat sẽ thêm một mã thông báo xác thực vào tiêu đề Authorization
của mọi yêu cầu HTTPS đế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 của người mang. Đây là mã thông báo mã hoá 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 Cloud Functions hoặc Cloud Run, thì Cloud IAM sẽ tự động xử lý việc xác minh mã thông báo. Bạn chỉ cần thêm tài khoản dịch vụ Google Chat làm người gọi được uỷ quyền. Nếu ứng dụng của bạn triển khai máy chủ HTTP riêng, bạn có thể xác minh mã thông báo của người mang bằng cách sử dụng thư viện ứng dụng Google API 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 sẽ phản hồi yêu cầu bằng mã phản hồi HTTPS 401 (Unauthorized)
.
Xác thực các yêu cầu bằng Cloud Functions hoặc Cloud Run
Nếu logic hàm của bạn được triển khai bằng Cloud Functions hoặc Cloud Run, thì bạn phải chọn URL điểm cuối HTTP trong trường Đối tượng xác thực 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 đám mây hoặc điểm cuối 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 phương thức gọi.
Các bước sau đây cho biết cách sử dụng Cloud Functions (thế hệ 1):
Giao diện dòng lệnh
Sau khi triển khai hàm trên Google Cloud:
Trong Google Cloud Console, hãy chuyển đến trang Cloud Functions:
Trong danh sách Chức năng đám mây, hãy nhấp vào hộp đánh dấu bên cạnh hàm nhận. (Đừng nhấp vào chính hàm đó.)
Nhấp vào Quyền ở đầu màn hình. Ngăn Permissions (Quyền) sẽ mở ra.
Nhấp vào Thêm người đại diện.
Trong trường New principals (Chủ sở hữu mới), hãy nhập
chat@system.gserviceaccount.com
.Chọn vai trò Cloud Functions (Hàm trên đám mây) > Cloud Functions Invoker (Trình gọi hàm trên đám mây) trong trình đơn thả xuống Select a role (Chọn vai trò).
Nhấp vào Lưu.
gcloud
Sử dụng lệnh gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding RECEIVING_FUNCTION \
--member='serviceAccount:chat@system.gserviceaccount.com' \
--role='roles/cloudfunctions.invoker'
Thay thế RECEIVING_FUNCTION
bằng tên hàm của ứng dụng Chat.
Các bước sau đây cho biết cách sử dụng các dịch vụ Cloud Functions (thế hệ 2) hoặc Cloud Run:
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 Google Cloud Console, hãy chuyển đến trang Cloud Run:
Trong danh sách các dịch vụ của Cloud Run, hãy nhấp vào hộp đánh dấu bên cạnh hàm nhận. (Đừng nhấp vào chính hàm đó.)
Nhấp vào Quyền ở đầu màn hình. Ngăn Permissions (Quyền) sẽ mở ra.
Nhấp vào Thêm người đại diện.
Trong trường New principals (Người dùng mới), hãy nhập
chat@system.gserviceaccount.com
.Chọn vai trò Cloud Run > Cloud Run Invoker (Cloud Run Invoker) trong trình đơn thả xuống Select a role (Chọn vai trò).
Nhấp vào 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 mã 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 trong ứng dụng Chat được đặt thành URL điểm cuối HTTP, thì mã thông báo uỷ quyền của người mang trong yêu cầu là mã nhận dạng OpenID Connect (OIDC) do Google ký.
Trường email
được đặt thành chat@system.gserviceaccount.com
.
Trường Đố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 được định cấu hình của ứng dụng Chat là https://example.com/app/
, thì trường Đối tượng xác thực trong mã thông báo giá trị nhận dạng sẽ là https://example.com/app/
.
Các mẫu sau đây cho biết cách xác minh rằng mã thông báo truyền tải là 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 Mã số dự án JWT
Nếu trường Đối tượng xác thực của chế độ cài đặt kết nối trong ứng dụng Chat được đặt thành Project
Number
, thì mã thông báo uỷ quyền của người mang trong yêu cầu sẽ là một 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 Google Cloud mà bạn đã dùng để tạo ứng dụng Chat. Ví dụ: nếu số dự án Cloud của ứng dụng Chat là 1234567890
, thì trường audience
trong JWT sẽ là 1234567890
.
Các mẫu sau đây cho biết cách xác minh rằng mã thông báo truyền tải là 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ề việc xác thực và uỷ quyền trong Google Workspace, hãy xem bài viết Tìm hiểu về việc xác thực và uỷ quyền.
- Để biết thông tin tổng quan về việc xác thực và uỷ quyền trong Chat, hãy xem bài viết Tổng quan về việc 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ụ.