Nếu bạn mới sử dụng hoặc không quen với việc sử dụng Dịch vụ Google Identity hoặc ủy quyền, hãy bắt đầu bằng cách đọc bài viết Tổng quan.
Google cung cấp thư viện JavaScript bao gồm các tính năng ủy quyền để giúp bạn quản lý phạm vi, nhận được sự đồng ý của người dùng và dễ dàng hơn để làm việc với các quy trình OAuth 2.0 chuẩn. Ứng dụng web của bạn, chạy trong trình duyệt của người dùng, sử dụng thư viện này để quản lý luồng ngầm ẩn OAuth 2.0 hoặc để bắt đầu luồng mã ủy quyền kết thúc trên nền tảng phụ trợ của bạn.
Phạm vi chỉ xác thực
Một số phạm vi chỉ được dùng để xác thực người dùng: email
, profile
và
openid
. Nếu ứng dụng của bạn chỉ sử dụng các phạm vi này, hãy xem xét liệu Mã thông báo mã nhận dạng JWT và
Đăng nhập bằng Google để đăng ký người dùng cũng như đăng nhập có đáp ứng
nhu cầu của bạn hay không. Trong hầu hết các trường hợp, đây là phương pháp đơn giản và đơn giản nhất
có sẵn để xác thực người dùng.
Các thuật ngữ và khái niệm chính
Những hướng dẫn này giả định rằng bạn đã hiểu rõ về các khái niệm OAuth 2.0 và các tiêu chuẩn của IETF như RFC6749. Các thuật ngữ sau đây được sử dụng trong hướng dẫn ủy quyền:
- Mã truy cập là thông tin đăng nhập ngắn hạn cho mỗi người dùng do Google cấp. Mã này được dùng để gọi API Google một cách an toàn và truy cập vào dữ liệu người dùng.
- Mã ủy quyền là một mã tạm thời do Google cấp để xác định an toàn cho từng người dùng đang đăng nhập vào Tài khoản Google qua một trình duyệt. Nền tảng phụ trợ của bạn trao đổi mã này để truy cập và làm mới mã thông báo.
- Mã làm mới là thông tin đăng nhập lâu dài cho mỗi người dùng do Google cấp. Mã này được lưu trữ an toàn trên nền tảng của bạn và có thể được dùng để lấy mã truy cập hợp lệ mới, ngay cả khi người dùng không có mặt.
- Phạm vi hạn chế mã thông báo ở một lượng dữ liệu người dùng nhất định và có giới hạn, hãy xem Phạm vi OAuth 2.0 cho API của Google để biết thêm thông tin.
- Chế độ cửa sổ bật lên là luồng mã ủy quyền dựa trên lệnh gọi lại JavaScript chạy trong trình duyệt của người dùng. Google sẽ gọi trình xử lý lệnh gọi lại, sau đó sẽ chịu trách nhiệm gửi mã xác thực đến nền tảng của bạn, việc này sẽ tùy thuộc vào bạn.
- Chế độ chuyển hướng là luồng mã ủy quyền dựa trên các lệnh chuyển hướng HTTP. Tác nhân người dùng được chuyển hướng đầu tiên tới Google, lệnh chuyển hướng thứ hai từ Google đến điểm cuối mã ủy quyền của nền tảng bao gồm mã.
Vòng đời của mã thông báo do Google đặt làm tài khoản phát hành. Do nhiều yếu tố khác nhau, thời lượng chính xác có thể thay đổi.
Luồng OAuth 2.0
Hai luồng, mã ngầm ẩn và mã ủy quyền được thảo luận. Cả hai đều trả về một mã thông báo truy cập phù hợp để sử dụng với các API của Google.
Bạn nên thực hiện quy trình mã ủy quyền vì quy trình này giúp cải thiện khả năng bảo mật cho người dùng. Luồng này cũng trả về một mã thông báo làm mới mà bạn có thể dùng để lấy thông tin truy cập mà không cần người dùng hiện diện, cho phép nền tảng của bạn dễ dàng thực hiện các hành động không đồng bộ hơn, chẳng hạn như gửi lời nhắc qua tin nhắn SMS về một cuộc họp sắp tới đã được lên lịch vào phút cuối. Chọn mô hình ủy quyền giải thích sự khác biệt giữa hai luồng chi tiết hơn.
Thư viện JavaScript Dịch vụ nhận dạng của Google tuân theo tiêu chuẩn OAuth 2.0 để:
- quản lý luồng ngầm định để cho phép ứng dụng web trong trình duyệt của bạn nhanh chóng và dễ dàng lấy mã truy cập cần thiết để gọi API Google.
- bắt đầu quy trình mã ủy quyền từ trình duyệt của người dùng.
Các bước phổ biến
Cả quy trình mã ngầm ẩn và mã ủy quyền đều bắt đầu giống nhau:
- Ứng dụng của bạn yêu cầu quyền truy cập vào một hoặc nhiều phạm vi.
- Google sẽ hiển thị hộp thoại đồng ý cho người dùng và nếu cần, trước tiên, người dùng sẽ đăng nhập vào Tài khoản Google của mình.
- Người dùng này phê duyệt từng phạm vi được yêu cầu.
Sau đó, mỗi quy trình sẽ kết thúc bằng các bước khác nhau.
Khi sử dụng luồng ngầm ẩn
- Google sử dụng trình xử lý lệnh gọi lại để thông báo cho ứng dụng của bạn về kết quả lấy sự đồng ý và trả về một mã truy cập cho mọi phạm vi đã phê duyệt.
Khi sử dụng quy trình mã xác thực
- Google sẽ phản hồi bằng mã uỷ quyền cho mỗi người dùng:
- Ở chế độ chuyển hướng, mã sẽ được trả về điểm cuối mã ủy quyền của nền tảng của bạn.
- Ở chế độ bật lên, mã được trả về trình xử lý gọi lại trong ứng dụng trên trình duyệt mà không cần người dùng rời khỏi trang web của bạn.
- Bắt đầu từ Bước 4: Xử lý phản hồi của máy chủ OAuth 2.0, nền tảng phụ trợ của bạn hoàn tất việc trao đổi từ máy chủ đến máy chủ, cuối cùng dẫn đến việc mã thông báo làm mới cho mỗi người dùng sẽ được trả về cho nền tảng của bạn.
Sự đồng ý của người dùng
Trước khi lấy mã truy cập, người dùng cá nhân phải đồng ý để ứng dụng của bạn truy cập vào các phạm vi đã yêu cầu. Để làm như vậy, Google sẽ hiển thị hộp thoại đồng ý ở Bước 2 ở trên và ghi lại kết quả trong myaccount.google.com/permissions.
Tên ứng dụng, biểu trưng, chính sách quyền riêng tư, điều khoản dịch vụ và phạm vi yêu cầu của bạn sẽ hiển thị cho người dùng, cùng với tùy chọn phê duyệt hoặc hủy yêu cầu.
Trong hình 1, hộp thoại đồng ý cho một phạm vi sẽ hiển thị. Khi yêu cầu một phạm vi, không cần hộp đánh dấu là cần thiết để phê duyệt hoặc từ chối phạm vi.
Hình 1: Hộp thoại đồng ý của người dùng với một phạm vi duy nhất.
Trong hình 2, hộp thoại đồng ý cho nhiều phạm vi được hiển thị. Khi cần nhiều hơn một phạm vi, bạn sẽ phải chọn từng hộp đánh dấu để cho phép người dùng phê duyệt hoặc từ chối từng phạm vi.
Hình 2: Hộp thoại đồng ý của người dùng với nhiều phạm vi.
Tài khoản người dùng
Bạn cần có Tài khoản Google để ghi lại sự đồng ý và cấp một mã truy cập. Trước đó, người dùng cá nhân phải tự xác thực với Google bằng cách đăng nhập vào Tài khoản Google.
Mặc dù không bắt buộc, nhưng bạn nên sử dụng tính năng Đăng nhập bằng Google để đăng ký và đăng nhập vào ứng dụng web hoặc nền tảng phụ trợ. Việc này giúp giảm bớt sự phiền hà cho người dùng bằng cách giảm thiểu số bước cần thiết và tùy ý cho phép bạn dễ dàng liên kết mã truy cập với từng tài khoản trên nền tảng của mình.
Ví dụ: việc sử dụng tính năng Đăng nhập bằng Google sẽ thiết lập một phiên Tài khoản Google đang hoạt động, nhờ đó, bạn không cần phải nhắc người dùng đăng nhập vào Tài khoản Google sau này khi đưa ra yêu cầu ủy quyền. Nếu bạn chọn xác thực người dùng cho ứng dụng của mình bằng các phương thức khác, chẳng hạn như tên người dùng và mật khẩu, hoặc các nhà cung cấp danh tính khác, thì trước tiên, họ vẫn phải đăng nhập vào Tài khoản Google để lấy sự đồng ý.
Việc thêm gợi ý trong khi khởi tạo ủy quyền (thường là địa chỉ email của Tài khoản Google của người dùng) sẽ cho phép Google bỏ qua việc hiển thị trình chọn tài khoản, giúp người dùng tiết kiệm một bước. Bằng chứng xác thực mã thông báo nhận dạng được đăng nhập bằng Đăng nhập bằng Google chứa địa chỉ email của người dùng.
Các ứng dụng web chỉ chạy trong trình duyệt có thể chỉ dựa vào Google để xác thực người dùng, chọn không triển khai hệ thống quản lý tài khoản người dùng. Trong trường hợp này, gọi là luồng ngầm ẩn, bạn không cần liên kết mã thông báo làm mới với tài khoản người dùng và lưu trữ bảo mật.
Ngoài ra, cần có hệ thống tài khoản người dùng theo quy trình mã ủy quyền. Mã thông báo làm mới cho mỗi người dùng phải được liên kết với một tài khoản cá nhân trên nền tảng phụ trợ và được lưu trữ để sử dụng sau này. Cách triển khai, làm việc với và quản lý hệ thống tài khoản người dùng là duy nhất trên nền tảng của bạn và không được thảo luận chi tiết hơn.
Xem và thu hồi sự đồng ý
Người dùng có thể xem hoặc thu hồi sự đồng ý bất cứ lúc nào từ phần cài đặt Tài khoản Google của họ.
Ứng dụng hoặc nền tảng web có thể gọi
google.accounts.oauth2.revoke
để thu hồi mã thông báo và xóa sự đồng ý của người dùng (không bắt buộc), hữu ích khi người dùng xóa
tài khoản của họ khỏi nền tảng của bạn.
Các hình thức uỷ quyền khác
Ngoài ra, các trình duyệt có thể lấy mã truy cập bằng cách sử dụng luồng ngầm ẩn bằng cách gọi trực tiếp Điểm cuối OAuth 2.0 của Google theo mô tả trong OAuth 2.0 cho Ứng dụng web phía máy khách.
Tương tự như vậy, đối với quy trình mã ủy quyền, bạn có thể chọn triển khai các phương thức của riêng mình và làm theo các bước được nêu trong bài viết Sử dụng OAuth 2.0 cho Ứng dụng máy chủ web.
Trong cả hai trường hợp, bạn nên sử dụng thư viện Dịch vụ danh tính của Google để giảm thời gian và nỗ lực phát triển của mình, đồng thời giảm thiểu các rủi ro bảo mật như những nội dung được mô tả trong bài viết Các phương pháp hay nhất về bảo mật OAuth 2.0.