Đăng nhập cấu trúc python json

Google API sử dụng OAuth 2. 0 giao thức xác thực và ủy quyền. Google hỗ trợ OAuth 2 phổ biến. 0 chẳng hạn như các tình huống dành cho máy chủ web, ứng dụng phía máy khách, đã cài đặt và thiết bị đầu vào giới hạn

Để bắt đầu, hãy lấy OAuth 2. 0 thông tin đăng nhập của khách hàng từ Google API Console. Sau đó, ứng dụng khách của bạn yêu cầu mã thông báo truy cập từ Máy chủ ủy quyền của Google, trích xuất mã thông báo từ phản hồi và gửi mã thông báo tới API Google mà bạn muốn truy cập. Để trình diễn tương tác về cách sử dụng OAuth 2. 0 với Google (bao gồm tùy chọn sử dụng thông tin đăng nhập khách hàng của riêng bạn), hãy thử nghiệm với OAuth 2. 0 sân chơi

Trang này cung cấp tổng quan về OAuth 2. 0 kịch bản ủy quyền mà Google hỗ trợ và cung cấp liên kết đến nội dung chi tiết hơn. Để biết chi tiết về cách sử dụng OAuth 2. 0 để xác thực, xem OpenID Connect

Ghi chú. Do ý nghĩa bảo mật của việc triển khai chính xác, chúng tôi đặc biệt khuyến khích bạn sử dụng OAuth 2. 0 thư viện khi tương tác với OAuth 2 của Google. 0 điểm cuối. Cách tốt nhất là sử dụng mã được gỡ lỗi tốt do người khác cung cấp và nó sẽ giúp bạn bảo vệ chính mình và người dùng của mình. Để biết thêm thông tin, hãy xem Thư viện máy khách

Các bước cơ bản

Tất cả các ứng dụng đều tuân theo một mẫu cơ bản khi truy cập Google API bằng OAuth 2. 0. Ở cấp độ cao, bạn làm theo năm bước

1. Lấy OAuth 2. 0 thông tin xác thực từ Google API Console

Truy cập Google API Console để lấy OAuth 2. 0 thông tin đăng nhập chẳng hạn như ID ứng dụng khách và bí mật ứng dụng khách mà cả Google và ứng dụng của bạn đều biết. Tập hợp các giá trị khác nhau dựa trên loại ứng dụng bạn đang xây dựng. Ví dụ: ứng dụng JavaScript không yêu cầu bí mật, nhưng ứng dụng máy chủ web thì không

2. Nhận mã thông báo truy cập từ Máy chủ ủy quyền của Google

Trước khi ứng dụng của bạn có thể truy cập dữ liệu riêng tư bằng Google API, ứng dụng phải nhận được mã thông báo truy cập cấp quyền truy cập vào API đó. Một mã thông báo truy cập duy nhất có thể cấp các mức độ truy cập khác nhau cho nhiều API. Một tham số biến có tên là scope kiểm soát tập hợp các tài nguyên và hoạt động mà mã thông báo truy cập cho phép. Trong khi yêu cầu mã thông báo truy cập, ứng dụng của bạn sẽ gửi một hoặc nhiều giá trị trong tham số scope

Có một số cách để thực hiện yêu cầu này và chúng thay đổi tùy theo loại ứng dụng bạn đang xây dựng. Ví dụ: ứng dụng JavaScript có thể yêu cầu mã thông báo truy cập bằng cách sử dụng trình duyệt chuyển hướng đến Google, trong khi ứng dụng được cài đặt trên thiết bị không có trình duyệt sử dụng yêu cầu dịch vụ web

Một số yêu cầu yêu cầu bước xác thực khi người dùng đăng nhập bằng tài khoản Google của họ. Sau khi đăng nhập, người dùng được hỏi liệu họ có sẵn sàng cấp một hoặc nhiều quyền mà ứng dụng của bạn đang yêu cầu hay không. Quá trình này được gọi là sự đồng ý của người dùng

Nếu người dùng cấp ít nhất một quyền, Máy chủ ủy quyền của Google sẽ gửi cho ứng dụng của bạn mã thông báo truy cập (hoặc mã ủy quyền mà ứng dụng của bạn có thể sử dụng để nhận mã thông báo truy cập) và danh sách các phạm vi quyền truy cập được cấp bởi mã thông báo đó. Nếu người dùng không cấp quyền, máy chủ sẽ trả về lỗi

Nói chung, cách tốt nhất là yêu cầu phạm vi tăng dần, tại thời điểm cần truy cập, thay vì yêu cầu trước. Ví dụ: một ứng dụng muốn hỗ trợ lưu sự kiện vào lịch không được yêu cầu quyền truy cập Lịch Google cho đến khi người dùng nhấn nút "Thêm vào Lịch";

3. Kiểm tra phạm vi truy cập được cấp bởi người dùng

So sánh các phạm vi có trong phản hồi mã thông báo truy cập với các phạm vi cần thiết để truy cập các tính năng và chức năng của ứng dụng của bạn phụ thuộc vào quyền truy cập vào API Google có liên quan. Vô hiệu hóa bất kỳ tính năng nào của ứng dụng không thể hoạt động nếu không có quyền truy cập vào API liên quan

Phạm vi có trong yêu cầu của bạn có thể không khớp với phạm vi có trong phản hồi của bạn, ngay cả khi người dùng đã cấp tất cả các phạm vi được yêu cầu. Tham khảo tài liệu cho từng API Google để biết phạm vi cần thiết để truy cập. Một API có thể ánh xạ nhiều giá trị chuỗi phạm vi vào một phạm vi truy cập duy nhất, trả về cùng một chuỗi phạm vi cho tất cả các giá trị được phép trong yêu cầu. Thí dụ. API Google People có thể trả về phạm vi https://www.googleapis.com/auth/contacts khi ứng dụng yêu cầu người dùng ủy quyền phạm vi https://www.google.com/m8/feeds/;

4. Gửi mã thông báo truy cập tới API

Sau khi ứng dụng nhận được mã thông báo truy cập, ứng dụng sẽ gửi mã thông báo đó tới Google API trong tiêu đề yêu cầu Ủy quyền HTTP. Có thể gửi mã thông báo dưới dạng tham số chuỗi truy vấn URI, nhưng chúng tôi không khuyến nghị điều đó vì tham số URI có thể kết thúc trong tệp nhật ký không hoàn toàn an toàn. Ngoài ra, cách thực hành REST tốt là tránh tạo các tên tham số URI không cần thiết

Mã thông báo truy cập chỉ hợp lệ đối với tập hợp các hoạt động và tài nguyên được mô tả trong scope của yêu cầu mã thông báo. Ví dụ: nếu mã thông báo truy cập được cấp cho API Lịch Google, thì nó không cấp quyền truy cập vào API Danh bạ Google. Tuy nhiên, bạn có thể gửi mã thông báo truy cập đó tới API Lịch Google nhiều lần cho các hoạt động tương tự

5. Làm mới mã thông báo truy cập, nếu cần

Mã thông báo truy cập có thời gian tồn tại hạn chế. Nếu ứng dụng của bạn cần quyền truy cập vào Google API ngoài thời gian tồn tại của một mã thông báo truy cập, thì ứng dụng đó có thể nhận được mã thông báo làm mới. Mã thông báo làm mới cho phép ứng dụng của bạn nhận mã thông báo truy cập mới

Ghi chú. Lưu mã thông báo làm mới trong bộ lưu trữ dài hạn an toàn và tiếp tục sử dụng chúng miễn là chúng vẫn còn hiệu lực. Các giới hạn áp dụng cho số lượng mã thông báo làm mới được phát hành cho mỗi kết hợp máy khách-người dùng và cho mỗi người dùng trên tất cả các máy khách và các giới hạn này là khác nhau. Nếu ứng dụng của bạn yêu cầu đủ mã thông báo làm mới vượt quá một trong các giới hạn, mã thông báo làm mới cũ hơn sẽ ngừng hoạt động

kịch bản

Ứng dụng máy chủ web

Google OAuth 2. 0 hỗ trợ các ứng dụng máy chủ web sử dụng các ngôn ngữ và khuôn khổ như PHP, Java, Python, Ruby và ASP. NET

Trình tự ủy quyền bắt đầu khi ứng dụng của bạn chuyển hướng trình duyệt tới một URL của Google; . Google xử lý xác thực người dùng, lựa chọn phiên và sự đồng ý của người dùng. Kết quả là mã ủy quyền mà ứng dụng có thể đổi lấy mã thông báo truy cập và mã thông báo làm mới

Ứng dụng phải lưu trữ mã thông báo làm mới để sử dụng trong tương lai và sử dụng mã thông báo truy cập để truy cập Google API. Sau khi mã thông báo truy cập hết hạn, ứng dụng sẽ sử dụng mã thông báo làm mới để lấy mã mới

Đăng nhập cấu trúc python json

Để biết chi tiết, hãy xem Sử dụng OAuth 2. 0 cho ứng dụng máy chủ web

ứng dụng đã cài đặt

Google OAuth 2. 0 hỗ trợ các ứng dụng được cài đặt trên các thiết bị như máy tính, thiết bị di động và máy tính bảng. Khi bạn tạo ID ứng dụng khách thông qua Bảng điều khiển API của Google, hãy chỉ định rằng đây là ứng dụng Đã cài đặt, sau đó chọn Android, ứng dụng Chrome, iOS, Nền tảng Windows phổ biến (UWP) hoặc ứng dụng Máy tính để bàn làm loại ứng dụng

Quá trình dẫn đến một ID khách hàng và, trong một số trường hợp, một bí mật khách hàng mà bạn nhúng vào mã nguồn của ứng dụng của mình. (Trong bối cảnh này, bí mật của khách hàng rõ ràng không được coi là bí mật. )

Trình tự ủy quyền bắt đầu khi ứng dụng của bạn chuyển hướng trình duyệt tới một URL của Google; . Google xử lý xác thực người dùng, lựa chọn phiên và sự đồng ý của người dùng. Kết quả là mã ủy quyền mà ứng dụng có thể đổi lấy mã thông báo truy cập và mã thông báo làm mới

Ứng dụng phải lưu trữ mã thông báo làm mới để sử dụng trong tương lai và sử dụng mã thông báo truy cập để truy cập Google API. Sau khi mã thông báo truy cập hết hạn, ứng dụng sẽ sử dụng mã thông báo làm mới để lấy mã mới

Đăng nhập cấu trúc python json

Để biết chi tiết, hãy xem Sử dụng OAuth 2. 0 cho các ứng dụng đã cài đặt

Ứng dụng phía máy khách (JavaScript)

Google OAuth 2. 0 hỗ trợ các ứng dụng JavaScript chạy trên trình duyệt

Trình tự ủy quyền bắt đầu khi ứng dụng của bạn chuyển hướng trình duyệt tới một URL của Google; . Google xử lý xác thực người dùng, lựa chọn phiên và sự đồng ý của người dùng

Kết quả là mã thông báo truy cập mà khách hàng phải xác thực trước khi đưa nó vào yêu cầu Google API. Khi mã thông báo hết hạn, ứng dụng sẽ lặp lại quy trình

Đăng nhập cấu trúc python json

Để biết chi tiết, hãy xem Sử dụng OAuth 2. 0 cho Ứng dụng phía máy khách

Ứng dụng trên các thiết bị đầu vào hạn chế

Google OAuth 2. 0 hỗ trợ các ứng dụng chạy trên các thiết bị có đầu vào hạn chế như bảng điều khiển trò chơi, máy quay video và máy in

Trình tự ủy quyền bắt đầu bằng việc ứng dụng đưa ra yêu cầu dịch vụ web tới URL của Google để lấy mã ủy quyền. Phản hồi chứa một số tham số, bao gồm URL và mã mà ứng dụng hiển thị cho người dùng

Người dùng lấy URL và mã từ thiết bị, sau đó chuyển sang một thiết bị hoặc máy tính riêng biệt có khả năng nhập liệu phong phú hơn. Người dùng khởi chạy trình duyệt, điều hướng đến URL được chỉ định, đăng nhập và nhập mã

Trong khi đó, ứng dụng thăm dò một URL của Google trong một khoảng thời gian xác định. Sau khi người dùng phê duyệt quyền truy cập, phản hồi từ máy chủ Google chứa mã thông báo truy cập và mã thông báo làm mới. Ứng dụng phải lưu trữ mã thông báo làm mới để sử dụng trong tương lai và sử dụng mã thông báo truy cập để truy cập Google API. Sau khi mã thông báo truy cập hết hạn, ứng dụng sẽ sử dụng mã thông báo làm mới để lấy mã mới

Đăng nhập cấu trúc python json

Để biết chi tiết, hãy xem Sử dụng OAuth 2. 0 cho thiết bị

tài khoản dịch vụ

Các API của Google như Prediction API và Google Cloud Storage có thể thay mặt ứng dụng của bạn hoạt động mà không cần truy cập thông tin người dùng. Trong những tình huống này, ứng dụng của bạn cần chứng minh danh tính của chính nó với API, nhưng không cần sự đồng ý của người dùng. Tương tự, trong các tình huống doanh nghiệp, ứng dụng của bạn có thể yêu cầu quyền truy cập được ủy quyền vào một số tài nguyên

Đối với các loại tương tác giữa máy chủ với máy chủ này, bạn cần có tài khoản dịch vụ, đây là tài khoản thuộc về ứng dụng của bạn thay vì của một người dùng cuối riêng lẻ. Ứng dụng của bạn gọi Google API thay mặt cho tài khoản dịch vụ và không cần có sự đồng ý của người dùng. (Trong các trường hợp không có tài khoản dịch vụ, ứng dụng của bạn thay mặt người dùng cuối gọi các API của Google và đôi khi cần có sự đồng ý của người dùng. )

Ghi chú. Các tình huống tài khoản dịch vụ này yêu cầu các ứng dụng tạo và ký bằng mật mã Mã thông báo Web JSON (JWT). Chúng tôi đặc biệt khuyến khích bạn sử dụng thư viện để thực hiện các tác vụ này. Nếu bạn viết mã này mà không sử dụng thư viện trừu tượng hóa việc tạo và ký mã thông báo, bạn có thể mắc lỗi gây ảnh hưởng nghiêm trọng đến tính bảo mật của ứng dụng của bạn. Để biết danh sách các thư viện hỗ trợ kịch bản này, hãy xem tài liệu tài khoản dịch vụ

Thông tin đăng nhập của tài khoản dịch vụ mà bạn có được từ Bảng điều khiển API của Google, bao gồm địa chỉ email được tạo là duy nhất, ID ứng dụng khách và ít nhất một cặp khóa công khai/riêng tư. Bạn sử dụng ID khách hàng và một khóa riêng để tạo JWT đã ký và tạo yêu cầu mã thông báo truy cập ở định dạng phù hợp. Sau đó, ứng dụng của bạn sẽ gửi yêu cầu mã thông báo tới Google OAuth 2. 0 Máy chủ ủy quyền, trả về mã thông báo truy cập. Ứng dụng sử dụng mã thông báo để truy cập Google API. Khi mã thông báo hết hạn, ứng dụng sẽ lặp lại quy trình

Đăng nhập cấu trúc python json

Để biết chi tiết, xem tài khoản tài khoản dịch vụ

Note: Although you can use service accounts in applications that run from a Google Workspace domain, service accounts are not members of your Google Workspace account and aren’t subject to domain policies set by Google Workspace administrators. For example, a policy set in the Google Workspace admin console to restrict the ability of Google Workspace end users to share documents outside of the domain would not apply to service accounts.

Kích thước mã thông báo

Mã thông báo có thể khác nhau về kích thước, tối đa các giới hạn sau

  • mã ủy quyền. 256 byte
  • Truy cập mã thông báo. 2048 byte
  • Làm mới mã thông báo. 512 byte

Mã thông báo truy cập do API dịch vụ mã thông báo bảo mật của Google Cloud trả về có cấu trúc tương tự như Google API OAuth 2. 0 mã thông báo truy cập nhưng có giới hạn kích thước mã thông báo khác nhau. Để biết chi tiết, xem tài liệu API

Google bảo lưu quyền thay đổi kích thước mã thông báo trong các giới hạn này và ứng dụng của bạn phải hỗ trợ các kích thước mã thông báo thay đổi tương ứng

Làm mới mã thông báo hết hạn

Bạn phải viết mã của mình để lường trước khả năng mã thông báo làm mới được cấp có thể không còn hoạt động. Mã thông báo làm mới có thể ngừng hoạt động vì một trong những lý do sau

  • Người dùng đã thu hồi quyền truy cập ứng dụng của bạn
  • Mã thông báo làm mới đã không được sử dụng trong sáu tháng
  • Người dùng đã thay đổi mật khẩu và mã thông báo làm mới chứa phạm vi Gmail
  • Tài khoản người dùng đã vượt quá số lượng tối đa mã thông báo làm mới được cấp (trực tiếp)
  • Người dùng thuộc về tổ chức Google Cloud Platform có chính sách kiểm soát phiên có hiệu lực

Dự án Google Cloud Platform có màn hình đồng ý OAuth được định cấu hình cho loại người dùng bên ngoài và trạng thái xuất bản là "Thử nghiệm" được cấp mã thông báo làm mới sẽ hết hạn sau 7 ngày

Hiện có giới hạn 100 mã thông báo làm mới cho mỗi Tài khoản Google mỗi OAuth 2. 0 ID khách hàng. Nếu đạt đến giới hạn, việc tạo mã thông báo làm mới mới sẽ tự động làm mất hiệu lực mã thông báo làm mới cũ nhất mà không có cảnh báo. Giới hạn này không áp dụng cho tài khoản dịch vụ

Ngoài ra còn có giới hạn lớn hơn đối với tổng số mã thông báo làm mới mà tài khoản người dùng hoặc tài khoản dịch vụ có thể có trên tất cả các máy khách. Hầu hết người dùng bình thường sẽ không vượt quá giới hạn này nhưng tài khoản của nhà phát triển được sử dụng để thử nghiệm triển khai có thể

Nếu bạn cần ủy quyền cho nhiều chương trình, máy móc hoặc thiết bị, một giải pháp thay thế là giới hạn số lượng khách hàng mà bạn ủy quyền cho mỗi Tài khoản Google ở ​​mức 15 hoặc 20. Nếu là quản trị viên Google Workspace, bạn có thể tạo thêm người dùng có đặc quyền quản trị và sử dụng những người dùng đó để ủy quyền cho một số ứng dụng

Xử lý các chính sách kiểm soát phiên cho các tổ chức Google Cloud Platform (GCP)

Quản trị viên của các tổ chức GCP có thể yêu cầu người dùng xác thực lại thường xuyên khi họ truy cập tài nguyên GCP, bằng cách sử dụng tính năng kiểm soát phiên của Google Cloud. Chính sách này ảnh hưởng đến quyền truy cập vào Google Cloud Console, Google Cloud SDK (còn được gọi là gcloud CLI) và mọi ứng dụng OAuth của bên thứ ba yêu cầu phạm vi Cloud Platform. Nếu người dùng có sẵn chính sách kiểm soát phiên thì khi hết thời lượng phiên, lệnh gọi API của bạn sẽ xảy ra lỗi tương tự như điều sẽ xảy ra nếu mã thông báo làm mới bị thu hồi - lệnh gọi sẽ không thành công với loại lỗi invalid_token; . Vì thời lượng phiên có thể rất hạn chế (từ 1 giờ đến 24 giờ), trường hợp này phải được xử lý khéo léo bằng cách khởi động lại phiên xác thực

Tương tự, bạn không được sử dụng hoặc khuyến khích sử dụng thông tin đăng nhập của người dùng để triển khai máy chủ tới máy chủ. Nếu thông tin đăng nhập của người dùng được triển khai trên máy chủ cho các công việc hoặc hoạt động đang chạy trong thời gian dài và khách hàng áp dụng chính sách kiểm soát phiên đối với những người dùng đó, thì ứng dụng máy chủ sẽ không thành công vì sẽ không có cách nào để xác thực lại người dùng khi thời lượng phiên hết hạn

Để biết thêm thông tin về cách giúp khách hàng của bạn triển khai tính năng này, hãy tham khảo bài viết trợ giúp tập trung vào quản trị viên này

thư viện máy khách

Các thư viện máy khách sau đây tích hợp với các khung phổ biến, giúp triển khai OAuth 2. 0 đơn giản hơn. Nhiều tính năng sẽ được thêm vào thư viện theo thời gian