Các phương pháp hay nhất

Trang này đề cập đến một số phương pháp chung hay nhất để tích hợp với OAuth 2.0. Hãy cân nhắc những phương pháp hay nhất này cùng với mọi hướng dẫn cụ thể dành cho loại ứng dụng và nền tảng phát triển mà bạn sử dụng. Ngoài ra, hãy tham khảo lời khuyên giúp ứng dụng sẵn sàng phát hành công khaicác chính sách OAuth 2.0 của Google.

Xử lý thông tin đăng nhập của ứng dụng một cách an toàn

Thông tin đăng nhập ứng dụng OAuth xác định danh tính ứng dụng của bạn và bạn phải xử lý cẩn thận. Chỉ lưu trữ những thông tin đăng nhập này trong bộ nhớ an toàn, ví dụ: sử dụng một trình quản lý bí mật như Google Cloud Secret Manager. Không mã cứng thông tin đăng nhập, đưa thông tin đó vào kho lưu trữ mã hoặc xuất bản công khai.

Xử lý mã thông báo của người dùng một cách an toàn

Mã thông báo người dùng bao gồm cả mã làm mới và mã truy cập mà ứng dụng của bạn sử dụng. Lưu trữ mã thông báo một cách an toàn ở trạng thái tĩnh và không bao giờ truyền mã này ở dạng văn bản thuần tuý. Sử dụng một hệ thống lưu trữ bảo mật phù hợp với nền tảng của bạn, chẳng hạn như Kho khoá trên Android, Dịch vụ Keychain trên iOS và macOS hoặc Kho khoá thông tin xác thực trên Windows.

Thu hồi mã thông báo ngay khi không còn cần thiết và xoá vĩnh viễn mã thông báo đó khỏi hệ thống của bạn.

Ngoài ra, bạn cũng nên cân nhắc các phương pháp hay nhất sau đây cho nền tảng của mình:

  • Đối với các ứng dụng phía máy chủ lưu trữ mã thông báo cho nhiều người dùng, hãy mã hoá các mã đó khi lưu trữ và đảm bảo rằng kho dữ liệu của bạn không thể truy cập công khai trên Internet.
  • Đối với ứng dụng gốc dành cho máy tính, bạn nên sử dụng giao thức Khoá bằng chứng để trao đổi mã (PKCE) để lấy mã uỷ quyền có thể đổi lấy mã truy cập.

Xử lý thời hạn thu hồi và làm mới mã thông báo

Nếu ứng dụng của bạn đã yêu cầu mã làm mới để truy cập khi không có mạng, thì bạn cũng phải xử lý trường hợp vô hiệu hoá hoặc hết hạn của mã đó. Mã thông báo có thể không hợp lệ vì nhiều lý do, chẳng hạn như mã có thể đã hết hạn hoặc người dùng hoặc một quy trình tự động có thể đã thu hồi quyền truy cập của ứng dụng. Trong trường hợp này, hãy cân nhắc kỹ cách ứng dụng của bạn phản hồi, bao gồm cả việc nhắc người dùng vào lần đăng nhập tiếp theo hoặc xoá dữ liệu của họ. Để nhận thông báo về việc thu hồi mã thông báo, hãy tích hợp với dịch vụ Bảo vệ nhiều tài khoản.

Sử dụng tính năng uỷ quyền gia tăng

Sử dụng tính năng uỷ quyền gia tăng để yêu cầu phạm vi OAuth phù hợp khi ứng dụng của bạn cần chức năng này.

Bạn không nên yêu cầu quyền truy cập vào dữ liệu khi người dùng xác thực lần đầu, trừ phi yêu cầu đó cần thiết cho chức năng cốt lõi của ứng dụng. Thay vào đó, hãy chỉ yêu cầu các phạm vi cụ thể cần thiết cho một tác vụ, theo nguyên tắc chọn phạm vi nhỏ nhất, bị giới hạn nhất có thể.

Hãy luôn yêu cầu phạm vi theo bối cảnh để giúp người dùng hiểu lý do ứng dụng của bạn yêu cầu quyền truy cập và cách dữ liệu được sử dụng.

Ví dụ: ứng dụng của bạn có thể tuân theo mô hình sau:

  1. Người dùng xác thực với ứng dụng của bạn
    1. Bạn không cần yêu cầu phạm vi nào khác. Ứng dụng cung cấp chức năng cơ bản để cho phép người dùng khám phá và sử dụng các tính năng không yêu cầu dữ liệu hoặc quyền truy cập bổ sung.
  2. Người dùng chọn một tính năng cần quyền truy cập vào dữ liệu bổ sung
    1. Ứng dụng của bạn đưa ra một yêu cầu uỷ quyền cho phạm vi OAuth cụ thể này theo yêu cầu đối với tính năng này. Nếu tính năng này đòi hỏi nhiều phạm vi, hãy làm theo các phương pháp hay nhất dưới đây.
    2. Nếu người dùng từ chối yêu cầu, ứng dụng sẽ tắt tính năng này và cung cấp cho người dùng thêm ngữ cảnh để yêu cầu lại quyền truy cập.

Xử lý sự đồng ý cho nhiều phạm vi

Khi yêu cầu nhiều phạm vi cùng một lúc, người dùng có thể không cấp được tất cả các phạm vi OAuth mà bạn đã yêu cầu. Ứng dụng của bạn phải xử lý việc từ chối phạm vi bằng cách tắt chức năng có liên quan.

Nếu chức năng cơ bản của ứng dụng cần đến nhiều phạm vi, hãy giải thích điều này cho người dùng trước khi nhắc họ đồng ý.

Bạn chỉ có thể nhắc lại người dùng sau khi họ cho biết rõ ràng ý định sử dụng tính năng cụ thể đòi hỏi phạm vi đó. Ứng dụng của bạn phải cung cấp cho người dùng ngữ cảnh và lý do có liên quan trước khi yêu cầu phạm vi OAuth.

Bạn nên giảm thiểu số lượng phạm vi mà ứng dụng yêu cầu cùng một lúc. Thay vào đó, hãy tận dụng uỷ quyền gia tăng để yêu cầu phạm vi trong bối cảnh của các tính năng và chức năng.

Sử dụng trình duyệt an toàn

Trên web, bạn chỉ được thực hiện các yêu cầu uỷ quyền cho OAuth 2.0 trên những trình duyệt web có đầy đủ tính năng. Trên các nền tảng khác, hãy nhớ chọn đúng loại ứng dụng OAuth và tích hợp OAuth cho phù hợp với nền tảng của bạn. Không chuyển hướng yêu cầu thông qua các môi trường duyệt web được nhúng, bao gồm cả chế độ xem web trên nền tảng di động, chẳng hạn như WebView trên Android hoặc WKWebView trên iOS. Thay vào đó, hãy sử dụng thư viện OAuth gốc hoặc tính năng Đăng nhập bằng Google cho nền tảng của bạn.

Tạo và định cấu hình ứng dụng OAuth theo cách thủ công

Để ngăn chặn hành vi sai trái, bạn không được tạo hoặc sửa đổi ứng dụng OAuth bằng phương thức lập trình. Bạn phải sử dụng Google Developers Console để xác nhận rõ ràng các điều khoản dịch vụ, định cấu hình ứng dụng OAuth và chuẩn bị cho quy trình xác minh OAuth.

Đối với quy trình làm việc tự động, hãy cân nhắc sử dụng tài khoản dịch vụ.