Berapa panjang access_token di Facebook OAuth2?

100

Saya mencari di Google dan StackOverflow untuk menemukan jawaban atas pertanyaan saya tetapi saya tidak dapat menemukannya.

Saya ingin menyimpan access_token ke database saya untuk akses offline dan saya ingin memastikan untuk menentukan panjang kolom saya yang benar.

Saya bahkan tidak dapat menemukan apakah itu hanya angka atau campuran antara angka dan string.

Cyril N.
sumber

Jawaban:

128

Saya bekerja di Facebook dan saya bisa memberikan jawaban pasti tentang ini.

Harap jangan menempatkan ukuran maksimum pada penyimpanan untuk token akses. Kami berharap keduanya akan tumbuh dan menyusut seiring waktu saat kami menambahkan dan menghapus data serta mengubah cara penyandiannya.

Kami memang memberi panduan di satu tempat tentang 255 karakter. Saya telah memperbarui entri blog yang memiliki informasi itu dan memperbarui dokumen token akses baru kami untuk menyertakan catatan tentang ukuran:

https://developers.facebook.com/docs/facebook-login/access-tokens/

Maaf bila membingungkan.

Christopher Blizzard
sumber
84
Sudah sepantasnya jawaban pasti dari Facebook adalah kita akan mengubahnya nanti.
Dave Cohen
6
Setidaknya dengan cara ini saya bisa mengharapkan perubahan, jadi saya tidak akan merasa tidak siap.
ZeeCoder
Tidak memiliki batasan sama sekali agak merepotkan karena kami saat ini menyimpannya dalam varchar2 300 byte dan mulai mengalami masalah hari ini dengan token 301-305 byte. Apakah Anda menyarankan agar kami menggunakan gumpalan sebagai gantinya? Atau adakah ukuran yang cukup besar yang bisa kita gunakan?
Trampas Kirk
Saya pasti menyimpan jawaban itu untuk kali berikutnya seseorang bertanya kepada saya "ukuran maksimal mana yang harus kita tetapkan untuk bidang ini" => "Jangan tetapkan ukuran maksimal apa pun, toh ukurannya akan bertambah". Sungguh, aku menyukainya !! Facebook Anda membuat hari saya;)
Christophe Fondacci
7
MySQL membutuhkan batas atas ini. Tolong beri batas atas yang realistis. misalnya 1000 karakter, 10.000 karakter, 1.000.000.000 karakter? Tidak memiliki batas atas tidak masuk akal.
Yahya Uddin
70

Dengan langkah Facebook baru-baru ini ke token akses terenkripsi, panjang token akses bisa mencapai 255 karakter. Jika Anda menyimpan token akses dalam database Anda, kolom tersebut harus dapat menampung setidaknya varchar (255). Berikut kutipan dari blog Pengembang Facebook dari 4 Oktober 2011:

"Dengan migrasi Token Akses Terenkripsi diaktifkan, format token akses telah berubah. Format token akses baru benar-benar buram dan Anda tidak boleh bergantung pada format dalam kode Anda. Bidang varchar (255) akan cukup untuk simpan token baru. "

Posting blog lengkap di sini: https://developers.facebook.com/blog/post/572

Johnny Oshika
sumber
2
1 untuk info terbaru. Ini seharusnya menjadi jawaban yang diterima sekarang.
David Boike
14
Sepertinya tidak valid lagi. Saya baru-baru ini menerima token akses panjang 256 karakter.
o_o
2
Sama seperti @o_o di atas. Kami semakin mendapatkan 240+ token panjang karakter, termasuk beberapa 255+ saat ini.
Eric Redon
Itu aneh. Dari sampel 8000, yang terpanjang yang pernah saya lihat adalah 126 karakter.
Johnny Oshika
1
Kami baru-baru ini melihat 344 token akses karakter.
o_o
28

Jawaban ini tidak lagi benar, dan saya tidak dapat menemukan nilai yang dikoreksi di dokumen FB. Kami telah menerima token akses yang lebih dari 255 karakter. Kami pindah dari VARCHAR ke SMALLTEXT sebagai gantinya untuk mencoba hal-hal yang tahan masa depan.

rodbegbie
sumber
Ya, saya mendapat 284 karakter di aplikasi produksi jadi saya mendapat kesalahan database karena kolomnya adalah varchar (255) ...
Yuki Matsukura
sama. baru saja mendapat 257
Louis Tsai
1
SMALLTEXTatau MEDIUMTEXT? Saya sebelumnya juga membatasi akses_token saya VARCHAR(255)dan saya berurusan dengan dampaknya hari ini.
NobleUplift
9

Dari bagian 1.4 dari The OAuth 2.0 Authorization Protocol( draft-ietf-oauth-v2-22 )

Token akses dapat memiliki format, struktur, dan metode pemanfaatan yang berbeda (mis. Properti kriptografi) berdasarkan persyaratan keamanan server sumber daya. Atribut token akses dan metode yang digunakan untuk mengakses sumber daya yang dilindungi berada di luar cakupan spesifikasi ini dan ditentukan oleh spesifikasi pendamping.

Saya mencari "spesifikasi pendamping" tetapi tidak menemukan sesuatu yang relevan dan di bagian 11.2.2 disebutkan

o Nama parameter: access_token
o Lokasi penggunaan parameter: respons otorisasi, respons token
o Ubah pengontrol: IETF
o Spesifikasi dokumen: [[dokumen ini]]

Yang tampaknya menunjukkan bahwa parameter access_token ditentukan dalam spesifikasi ini. Yang saya kira parameternya adalah tetapi token akses yang sebenarnya tidak sepenuhnya sempurna.

Pembaruan: Versi terbaru dari penulisan spesifikasi ini ( draf-ietf-oauth-v2-31 ) menyertakan lampiran yang mendefinisikan lebih baik apa yang diharapkan dari parameter access_token

A.12. Sintaks "access_token"

The "access_token" element is defined in Section 4.2.2 and
Section 5.1:

  access-token = 1*VSCHAR

Jadi intinya adalah bahwa access_token harus memiliki setidaknya 1 karakter tetapi tidak ada batasan berapa lama yang ditentukan dalam spesifikasi ini.

Perhatikan bahwa mereka mendefinisikan VSCHAR =% x20-7E

Josh
sumber
5

Token akses Facebook bisa lebih dari 255 karakter. Saya mengalami banyak kesalahan seperti di ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)mana nilainya adalah token akses facebook. Jangan gunakan stringkolom tipe karena panjangnya terbatas. Anda dapat menggunakan textkolom type untuk menyimpan token.

palinium
sumber
3

Baru-baru ini, aplikasi kami telah melihatnya lebih dari 100 karakter. Saya masih mencari dokumentasi sehingga saya dapat menemukan ukuran bidang yang 'aman' untuk mereka.

Matt Miller
sumber
8
Apa "dokumentasi" yang Anda bicarakan ini? : D
Tandai
2

Saya akan memperbarui jawaban dari waktu yang dihabiskan.

Dari dokumentasi OAuth2,

Ukuran string token akses tidak ditentukan oleh spesifikasi ini. Klien harus menghindari membuat asumsi tentang ukuran nilai. Server otorisasi harus mendokumentasikan ukuran nilai apa pun yang dikeluarkannya.

(Bagian 4.2.2 dari dokumen ini )

Catatan: Facebook menggunakan OAuth2, seperti yang disebutkan di halaman ini .

Jadi sekarang, sepertinya tidak ada informasi yang tersedia di portail pengembang Facebook tentang panjang token OAuth. Yahoo tampaknya menggunakan token panjang 400 bit, jadi sebaiknya asumsikan bahwa kolom TEXT di MySQL lebih aman daripada varchar.

Cyril N.
sumber