Các mã làm mới của Google có hết hạn không?


108

Tôi đã sử dụng mã làm mới nhiều lần chỉ trong một thời gian ngắn cho mục đích thử nghiệm, nhưng tôi tự hỏi liệu mã làm mới của Google có bao giờ hết hạn không? Tôi có thể sử dụng cùng một mã thông báo làm mới để lấy lại mã thông báo truy cập khác trong một khoảng thời gian dài (một tuần hoặc thậm chí vài tháng) không?


bạn đang sử dụng ruby ​​hay bạn có mã mẫu cho điều đó?
Thufir

Câu trả lời:


146

Máy chủ Google Auth đã phát hành Mã làm mới không bao giờ hết hạn - đó là toàn bộ điểm của mã làm mới. Mã thông báo làm mới sẽ hết hạn (hoặc tôi nên nói là trở thành trái phép) khi người dùng thu hồi quyền truy cập vào ứng dụng của bạn.

Tham khảo tài liệu này, nó nêu rõ chức năng của các mã làm mới.

Thay vì phát hành mã thông báo lâu dài (thường tốt trong một năm hoặc thời gian tồn tại không giới hạn), máy chủ có thể phát hành mã thông báo truy cập tồn tại trong thời gian ngắn và mã thông báo làm mới tồn tại lâu dài. Vì vậy, trong ngắn hạn, bạn có thể sử dụng mã thông báo làm mới nhiều lần cho đến khi người dùng cấp quyền truy cập thu hồi quyền truy cập vào ứng dụng của bạn.


6
Phần "tốt cho một năm" làm cho nó không hoàn toàn rõ ràng như bạn đề xuất; nhưng vì nó dường như không gây ra vấn đề trong thực tế, tôi giả định rằng mã thông báo làm mới là thường xanh.
mahemoff

54
Hết hạn mã thông báo Bạn nên viết mã của mình để lường trước khả năng mã thông báo đã cấp có thể không còn hoạt động. Mã thông báo 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. Mã thông báo đã không được sử dụng trong sáu tháng. Tài khoản người dùng đã vượt quá một số lượng yêu cầu mã thông báo nhất định. Hiện có giới hạn 25 mã thông báo cho mỗi tài khoản người dùng Google. Nếu tài khoản người dùng có 25 mã thông báo hợp lệ, yêu cầu xác thực tiếp theo sẽ thành công, nhưng lặng lẽ làm mất hiệu lực mã thông báo tồn đọng cũ nhất mà không có bất kỳ cảnh báo nào mà người dùng có thể nhìn thấy. (từ developers.google.com/accounts/docs/OAuth2 )
bazik

17
Mã thông báo làm mới 'tồn tại lâu dài' là một cái gì đó khác với 'không bao giờ hết hạn'.
Kapé

1
Vậy làm cách nào để mã của bạn có thể kiểm tra xem mã thông báo làm mới của bạn có còn hợp lệ hay không?
SsjCosty

3
@Shadow Nếu mã thông báo làm mới hiếm khi hết hạn, như đã đề xuất, tại sao Google không phát hành mã thông báo truy cập không hết hạn ngay từ đầu. Theo như tôi hiểu, mã thông báo truy cập được phát hành bằng oAuth 2.0, sau đó có thể được sử dụng để yêu cầu mã thông báo làm mới. Tại sao không chỉ có một mã thông báo truy cập vĩnh viễn và loại bỏ lệnh gọi bổ sung cho mã làm mới.
Charles Robertson

62

Đây là một chủ đề rất khó hiểu. Câu trả lời đầu tiên có vẻ đúng, nhưng không thực sự trích dẫn bất kỳ điều gì có thẩm quyền từ google.

Câu trả lời chắc chắn nhất mà tôi tìm thấy thực sự là trong sân chơi của nhà phát triển, nơi bạn có được mã thông báo. Bước 2 có một ghi chú ở dưới cùng cho biết:

"Lưu ý: Sân chơi OAuth không lưu trữ mã làm mới, nhưng vì mã làm mới không bao giờ hết hạn, người dùng nên truy cập trang Truy cập được ủy quyền tài khoản Google của họ nếu họ muốn thu hồi thủ công."

https://developers.google.com/oauthplayground/


2
câu trả lời hay nhất ở đây - tại sao không ai có lượt ủng hộ là không thể tin được - cảm ơn rất nhiều - coi các mã làm mới như thể chúng không bao giờ hết hạn - tuy nhiên khi đăng nhập, hãy kiểm tra mã mới trong trường hợp người dùng thu hồi mã làm mới, trong trường hợp này, Google sẽ cung cấp một mã làm mới mới khi đăng nhập vì vậy chỉ cần cập nhật các refresh thẻ
danday74

14

Tôi không nghĩ điều đó hoàn toàn đúng:

Lưu ý rằng có giới hạn về số lượng mã làm mới sẽ được phát hành; một giới hạn cho mỗi khách hàng / kết hợp người dùng và một giới hạn khác cho mỗi người dùng trên tất cả các khách hàng. Bạn nên lưu mã thông báo làm mới trong bộ nhớ lâu dài và tiếp tục sử dụng chúng miễn là chúng vẫn còn hiệu lực. Nếu ứng dụng của bạn yêu cầu quá nhiều mã làm mới, nó có thể gặp phải những giới hạn này, trong trường hợp đó, các mã làm mới cũ hơn sẽ ngừng hoạt động.

từ trang này: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

Đó là từ tài liệu YouTube (mà tôi thấy là tốt hơn nhiều so với các tài liệu api khác) nhưng tôi nghĩ rằng nó giống nhau trên tất cả các ứng dụng của Google.



5

Các quy tắc đã thay đổi vào thời điểm này vào năm 2017, vì vậy câu trả lời tốt nhất mà tôi nghĩ là nó phụ thuộc vào sản phẩm. Ví dụ: trên API Gmail, mã làm mới Oauth 2.0 sẽ hết hạn khi thay đổi mật khẩu. Xem này https://support.google.com/a/answer/6328616?hl=vi

Chúng tôi đã từng thiết lập trước quyền truy cập API và tạo mã thông báo làm mới khi chúng tôi thiết lập người dùng gmail MỚI và sau đó chúng tôi có thể lưu trữ thư của họ (theo luật chúng tôi bắt buộc phải làm như vậy), nhưng bây giờ ngay khi họ thay đổi mật khẩu, mã làm mới bị thu hồi.

Có lẽ đối với youtube, maps, mã thông báo làm mới vẫn thực sự tồn tại lâu dài, nhưng đối với api gmail, hãy tin tưởng vào một mã thông báo ngắn.


Có vẻ như nó đã trở thành chính thức về ngày 05 tháng 10 năm 2016. developers.googleblog.com/2016/09/...
TonyE

2

Khái niệm chính của mã thông báo làm mới là nó tồn tại lâu dài và không bao giờ hết hạn.

Mã thông báo truy cập có thời gian hết hạn và nó hết hạn, khi hết hạn, chúng tôi có thể sử dụng mã làm mới, mã này sẽ được sử dụng nhiều lần cho đến khi người dùng thu hồi khỏi tài khoản của mình.


0

Đọc nội dung này từ: https://developers.google.com/identity/protocols/oauth2#expiration 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 hoạt động nữa. 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ã làm mới chứa phạm vi Gmail. Tài khoản người dùng đã vượt quá số lượng mã làm mới được cấp (trực tiếp) tối đa. Hiện tại có giới hạn 50 mã làm mới cho mỗi tài khoản người dùng cho mỗi khách hàng. Nếu đạt đến giới hạn, việc tạo mã làm mới mới sẽ tự động làm mất hiệu lực mã làm mới cũ nhất mà không cần cảnh báo. Giới hạn này không áp dụng cho các tài khoản dịch vụ.

Ngoài ra còn có một giới hạn lớn hơn về tổng số mã làm mới mà một 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 khách hàng. 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 thử nghiệm của nhà phát triển thì có thể.


-2

Tôi đã thực hiện một số nghiên cứu sâu hơn và có vẻ như mã thông báo truy cập Google được sử dụng để truy xuất mã thông báo làm mới, trong lần yêu cầu 'ngoại tuyến' đầu tiên. Từ thời điểm này trở đi, mã thông báo làm mới được sử dụng để phát hành mã thông báo truy cập mới. Ý tưởng là mã thông báo truy cập là mã thông báo ngắn hạn, nhưng nó có thể được gia hạn bằng mã thông báo làm mới dài hạn. Điều này loại bỏ nhu cầu phải yêu cầu biến 'mã' URL, biến này yêu cầu phương pháp tiếp cận hai điểm cuối và phải được bắt đầu, sử dụng yêu cầu dựa trên liên kết giới thiệu:

http://www.jensbits.com/2012/01/09/google-api-offline-access-using-oauth-2-0-refresh-token/

Một số dịch vụ API REST như Dropbox phát hành mã thông báo truy cập tồn tại vĩnh viễn, nhưng Google phát hành mã thông báo truy cập ngắn hạn. PayPal sử dụng một thỏa hiệp, theo đó nó cho phép truy xuất mã thông báo truy cập mà không cần thực thi liên kết giới thiệu URI. Điều này có nghĩa là có thể truy xuất mã thông báo truy cập mà không cần phải nhấp vào liên kết để bắt đầu quá trình. Phương pháp luận của Google có nghĩa là các quy trình API chỉ nên được gọi khi cần sử dụng. Về cơ bản, các cuộc gọi được bắt đầu thông qua các thủ tục dựa trên liên kết giới thiệu. Điều này được kiểm soát bằng cách phát hành mã thông báo truy cập tồn tại trong thời gian ngắn hoặc mã thông báo truy cập phải được làm mới trong một chuỗi. Điều này đòi hỏi các nhà phát triển phải suy nghĩ cẩn thận hơn về cách một hệ thống nên vận hành.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.