Apakah token penyegaran Google kedaluwarsa?

108

Saya telah menggunakan token penyegaran beberapa kali hanya dalam waktu singkat untuk tujuan pengujian, tetapi saya bertanya-tanya apakah token penyegaran Google pernah kedaluwarsa? Dapatkah saya menggunakan token penyegaran yang sama untuk mendapatkan token akses lagi dan lagi untuk waktu yang lama (seminggu atau bahkan berbulan-bulan)?

Robin Carlo Catacutan
sumber
apakah Anda menggunakan ruby, atau apakah Anda memiliki contoh kode untuk itu?
Thufir

Jawaban:

146

Server Google Auth yang mengeluarkan token Segarkan tidak pernah kedaluwarsa - itulah inti dari token penyegaran. Token penyegaran akan kedaluwarsa (atau menurut saya menjadi tidak sah) ketika pengguna mencabut akses ke aplikasi Anda.

Lihat dokumen ini dengan jelas menyatakan fungsi token penyegaran.

Alih-alih menerbitkan token yang tahan lama (biasanya baik untuk satu tahun atau seumur hidup tidak terbatas), server dapat mengeluarkan token akses berumur pendek dan token penyegaran berumur panjang. Jadi singkatnya, Anda dapat menggunakan token penyegaran lagi dan lagi hingga pengguna yang berwenang mencabut akses ke aplikasi Anda.

Bayangan
sumber
6
Bagian "baik selama satu tahun" membuatnya tidak sejelas yang Anda sarankan; tetapi karena tampaknya tidak menimbulkan masalah dalam praktiknya, saya berasumsi token penyegaran selalu berlaku.
mahemoff
54
Token kedaluwarsa Anda harus menulis kode Anda untuk mengantisipasi kemungkinan token yang diberikan tidak lagi berfungsi. Token mungkin berhenti berfungsi karena salah satu alasan berikut: Pengguna telah mencabut akses. Token tidak digunakan selama enam bulan. Akun pengguna telah melebihi sejumlah permintaan token. Saat ini ada batas 25 token per akun pengguna Google. Jika akun pengguna memiliki 25 token yang valid, permintaan otentikasi berikutnya berhasil, tetapi diam-diam membatalkan token terlama yang masih ada tanpa peringatan yang terlihat oleh pengguna. (dari developers.google.com/accounts/docs/OAuth2 )
bazik
17
token penyegaran 'berumur panjang' adalah sesuatu yang berbeda dari 'tidak pernah kedaluwarsa'.
Kapé
1
Jadi, bagaimana kode Anda dapat memeriksa apakah token penyegaran Anda masih valid?
SsjCosty
3
@Shadow Jika token penyegaran jarang kedaluwarsa, seperti yang disarankan, mengapa Google tidak hanya mengeluarkan token akses yang tidak kedaluwarsa, di tempat pertama. Sejauh yang saya mengerti, token akses yang dikeluarkan menggunakan oAuth 2.0, kemudian dapat digunakan untuk meminta token penyegaran. Mengapa tidak hanya memiliki token akses permanen, dan hentikan panggilan ekstra untuk token penyegaran.
Charles Robertson
62

Ini adalah utas yang sangat membingungkan. Jawaban pertama tampaknya benar, tetapi sebenarnya tidak mengutip sesuatu yang berwibawa dari google.

Jawaban paling pasti yang saya temukan sebenarnya di taman bermain pengembang tempat Anda mendapatkan token. Langkah 2 memiliki catatan di bagian bawah yang berbunyi:

"Catatan: OAuth Playground tidak menyimpan token penyegaran, tetapi karena token penyegaran tidak pernah kedaluwarsa, pengguna harus membuka laman Akses Resmi Akun Google jika mereka ingin mencabutnya secara manual."

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

Josh Hunter
sumber
2
jawaban terbaik di sini - mengapa tidak ada yang mendapat suara positif tidak dapat dipercaya - banyak terima kasih - perlakukan token penyegaran seolah-olah tidak pernah kedaluwarsa - namun saat masuk, periksa yang baru jika pengguna mencabut token penyegaran, dalam skenario ini Google akan memberikan token penyegaran baru saat masuk jadi perbarui saja token penyegaran
danday74
14

Saya tidak berpikir itu sepenuhnya benar:

Perhatikan bahwa ada batasan jumlah token penyegaran yang akan dikeluarkan; satu batas per kombinasi klien / pengguna, dan satu lagi per pengguna di semua klien. Anda harus menyimpan token penyegaran dalam penyimpanan jangka panjang dan terus menggunakannya selama masih valid. Jika aplikasi Anda meminta terlalu banyak token penyegaran, aplikasi mungkin akan melewati batasan ini, dalam hal ini token penyegaran yang lebih lama akan berhenti berfungsi.

dari halaman ini: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

Itu dari dokumen YouTube (yang menurut saya jauh lebih baik daripada dokumen api lainnya) tetapi menurut saya itu sama di semua aplikasi Google.

Roaders
sumber
5

Aturannya telah berubah sekitar tahun 2017, jadi jawaban terbaik menurut saya adalah tergantung pada produknya. Misalnya, di API Gmail, token penyegaran Oauth 2.0 kedaluwarsa setelah sandi diubah. Lihat https://support.google.com/a/answer/6328616?hl=id ini

Kami biasanya menyiapkan akses API terlebih dahulu dan membuat token penyegaran saat kami menyiapkan pengguna gmail BARU, lalu kami dapat mengarsipkan email mereka (kami diwajibkan untuk melakukannya oleh hukum), tetapi sekarang segera setelah mereka mengubah sandi mereka, token penyegaran dicabut.

Mungkin untuk youtube, maps, token penyegaran masih benar-benar berumur panjang, tetapi untuk api gmail, andalkan token pendek.

TonyE
sumber
Sepertinya ini menjadi resmi pada 5 Oktober 2016. developer.googleblog.com/2016/09/…
TonyE
2

Konsep utama dari token penyegaran adalah tahan lama dan tidak pernah kedaluwarsa.

Token akses memiliki waktu kedaluwarsa dan kedaluwarsa, setelah kedaluwarsa kita dapat menggunakan token penyegaran, yang akan digunakan berulang kali sampai pengguna mencabut dari akunnya.

Shiven Ojha
sumber
0

Baca ini dari: https://developers.google.com/identity/protocols/oauth2#expiration Anda harus menulis kode Anda untuk mengantisipasi kemungkinan bahwa token penyegaran yang diberikan tidak lagi berfungsi. Token penyegaran mungkin berhenti berfungsi karena salah satu alasan berikut:

Pengguna telah mencabut akses aplikasi Anda. Token penyegaran tidak digunakan selama enam bulan. Pengguna mengubah sandi dan token penyegaran berisi cakupan Gmail. Akun pengguna telah melebihi jumlah maksimum token penyegaran yang diberikan (langsung). Saat ini ada batasan 50 token penyegaran per akun pengguna per klien. Jika batas tercapai, membuat token penyegaran baru secara otomatis membatalkan token penyegaran terlama tanpa peringatan. Batas ini tidak berlaku untuk akun layanan.

Ada juga batasan yang lebih besar pada jumlah total token penyegaran yang dapat dimiliki akun pengguna atau akun layanan di semua klien. Sebagian besar pengguna normal tidak akan melebihi batas ini tetapi akun pengujian pengembang mungkin.

Jos Luijten
sumber
-2

Saya telah melakukan penelitian lebih lanjut dan tampaknya token akses Google digunakan untuk mengambil token penyegaran, selama permintaan 'offline' pertama. Mulai saat ini dan seterusnya, token penyegaran digunakan untuk menerbitkan token akses baru. Idenya adalah bahwa token akses adalah token jangka pendek, tetapi dapat diperbarui dengan token penyegaran jangka panjang. Ini menghilangkan kebutuhan untuk meminta variabel 'kode' URL, yang membutuhkan pendekatan dua titik akhir dan harus dimulai, menggunakan permintaan berbasis perujuk:

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

Beberapa, layanan REST API seperti Dropbox, mengeluarkan token akses yang bertahan selamanya, tetapi Google mengeluarkan token akses jangka pendek. PayPal menggunakan kompromi, yang memungkinkan token akses diambil tanpa penegakan perujuk URI. Ini berarti token akses dapat diambil tanpa harus mengklik tautan untuk memulai proses. Metodologi Google berarti bahwa rutinitas API hanya boleh dipanggil berdasarkan kebutuhan penggunaan. Pada dasarnya, panggilan dimulai melalui prosedur berbasis perujuk. Ini dikendalikan dengan mengeluarkan token akses berumur pendek, atau token akses yang harus disegarkan dalam sebuah rantai. Ini mengharuskan pengembang untuk berpikir lebih hati-hati tentang bagaimana sistem seharusnya mengalir.

Charles Robertson
sumber