Bagaimana cara menghasilkan token pendek dengan paspor laravel?

Saya menggunakan paspor laravel dengan mode pemberian kata sandi, saya menemukan token akses yang dihasilkan sangat panjang, seperti ini:

{
    "token_type": "Bearer",
    "expires_in": 31536000,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjRmOTlkNDI2ZmIxN2I5OGVmNzExYzMyOGQ2YzMwODBhOGY4OGVjYWI4Yjg3Zjg2MmFkNWFlNGI5MzdiYjg0MGQ3MDk2NWI2OWY4NDk3MTE0In0.eyJhdWQiOiIyIiwianRpIjoiNGY5OWQ0MjZmYjE3Yjk4ZWY3MTFjMzI4ZDZjMzA4MGE4Zjg4ZWNhYjhiODdmODYyYWQ1YWU0YjkzN2JiODQwZDcwOTY1YjY5Zjg0OTcxMTQiLCJpYXQiOjE0ODk0NDAzODEsIm5iZiI6MTQ4OTQ0MDM4MSwiZXhwIjoxNTIwOTc2MzgxLCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.XEY0vMoUt6Z9cWMkELQhfcaC2uab8odQLmIVTh8YWULSYOPuw4vpTDFurgU2vflM8-5PYuIIOnw8-8CQVZvetkYLpp2r0GqdNPIcCwlZNh9zRFLLigJ1vm4GKsbGozoDieR9FBpvQ2K9gFM0V4kwjSwx74fdlC1imC1rZ8qRYy5e1zctrMSrVcGcT5F4PTm4DdTN50IRcsOIJK9T6Wgec-iYmey0-xKg0UQroCF6rZUtC0VlH8XwhW_1QfrCl7dkKIcEbWi4pgzDpwrLMZgLAQpPktCP2G9SujC99e7M_L3C8Y647enwUQSTKtp6xNyTyyHSqS0NAxU4U0TFTICMPH5D_L_WaTeBCLS3MdwM3cmTQdkjdXjljjurHld3yEvVemo7oAr2Wb_HOC1uFET0ndeVGI1ZhgM-AuUBy1dJrV4a0iyUIiVtO12LadFIK2m9h0YQlawN1me_HQy6FxdBQuMJ3WIuR3Mwp79RHkoYKFQGvfxTTK8N0emZzmLl5rODp6n7I1UKDb_g7weHdmFP2paTJCApikIXidYA-QXa1i2qMfCwB7gF_kqBvrOyL29wFFRBc_ACRA-0I8iEhZ18vF7htKkPgWoYyPzBKHjVJ4vrxV_VxbGcszIC5byAJKcmpcXEOnFXkFV7NF-tOb___hw9THTjYQmznM1OS__U8zA",
    "refresh_token": "RXFyjx21XaLKgkOXa5zZyVbhRqXDsRZbfsFZmxst4Un0+VWtl0xTn/jIOPzApdqFFoTBCH08Ytjxf6SlcEOIUuHhN5+V7wuun/nFCuKIoC2T1xg9Ny2KkzRq0IF+bSBgtZ5QXfu+ILkCSZ/uh39rRxpoO4aqcnJp2Bvj5wuVcFra2nnPCu/Rfs+AN7MA5H8WgzfLmsIFsh3/rtzU4KboFR0rQE4MrDecrJCmCjvAJS52LLdFhDnNi/KdjhxBXY7jpgXZF+HOLAribGPn9COoC7B9zGoYHA3zaOMopsJ+NaRTHsuf2VbXlrQ4eXME5XVB4+TpgU8LGipK1jv5Ndhfu/VJaxgRk94VEuAcYu4vWUEdNl5Y4sRPDSlIpwjnXxdiiAUuNnvbrUaRD/qStJmmzQiWe7M07qVTHp4PNrVOVhjZkIsFMWoMsRHWtDu0eRbde3tBOhIWUCwxndp9Ma9DlSwuq6jmhv/mi62QboYjgZrWJAqLSIeP13mRyH0kNR4LCauCpiXgaPPTywBBfYpEIn34DQeo9QQfvnnut9ky8hRgniQjhGbvgeyIOS7WgmDR0Wmbt0jwLY5MWl5WuyhAJztQPnt0sTLxWzey0ZCRC5DWMSzt/g8cTL7cfjCxPYYdLCsAYE6eXTEaA3zZLre2GnBJwwE0+3bIRctQDH9zYRE="
}

Saya tahu token yang panjang akan lebih aman, tetapi lebih dari seribu karakter sepertinya agak menakutkan. Menurut saya, JWT umumnya sangat kecil, tetapi di sini, token yang dihasilkan ini sangat panjang, sangat besar.

Saya ingin membuat token yang lebih pendek, apa cara yang baik untuk melakukannya?

Jika paspor laravel dapat menentukan panjang token?


person Shaun    schedule 13.03.2017    source sumber
comment
Saya rasa itu adalah token OAUTH standar, yang menurut definisinya bisa sepanjang 255 karakter - ini juga merupakan tindakan pengamanan jika menggunakan karakter yang cukup panjang. Apa alasan Anda menentang token panjang?   -  person xaggre    schedule 13.03.2017
comment
@MyronHöster, token akses dalam postingan memiliki panjang lebih dari seribu karakter.   -  person Joel Hinz    schedule 13.03.2017
comment
Ya, lebih dari 1000 karakter sepertinya salah bagi saya juga.. coba baca dokumen tentang membuat token laravel.com/docs/5.4/passport#managing-personal-access-tokens   -  person xaggre    schedule 13.03.2017
comment
Apakah Anda menyelesaikan masalah ini? Saya mengalami masalah serupa ketika panjang token lebih dari 1000 karakter!   -  person mdixon18    schedule 22.03.2017
comment
Masalah yang sama disini. ????   -  person Dominik    schedule 19.07.2017
comment
Adakah yang bisa mengatasi ini? Permasalahan yang sama!   -  person Aline Matos    schedule 28.07.2018


Jawaban (3)


Jika Anda merasa perlu memperpendek panjang token, mungkin Anda harus membuat ulang file pasangan kunci dengan perintah ini:

paspor tukang php:kunci --panjang=512 --force

person Sam Shon    schedule 24.06.2019
comment
itu memberikan kesalahan Opsi --length tidak ada. ketika saya menjalankan perintah - person Sushant Kumar; 12.06.2021

Panjang JWT bergantung pada 2 hal: ukuran payload Anda dan algoritma enkripsi yang digunakan. Laravel tampaknya menggunakan hashing kunci publik/pribadi (RS256) untuk JWT mereka, yang membutuhkan panjang kunci lebih panjang daripada menggunakan algoritma HS256. Anda dapat melihatnya jika membuka https://jwt.io/ dan menempelkan token Anda.

Jika Anda ingin menggunakan Laravel Passport maka tidak ada cara mudah untuk mengatasi persyaratan panjang ini. Anda dapat membuat lib dengan metode yang menggantikan metode Passport yang digunakan untuk mengatur algoritma hashing (tidak disarankan agar Anda menggunakan lubang kelinci ini), atau Anda tidak dapat menggunakan Passport dan sebagai gantinya menerapkan sistem otentikasi token JWT Anda sendiri, atau Anda dapat hidup saja dengan token panjang.

person Benjamin Dowson    schedule 28.07.2018

Menggunakan versi Paspor kurang dari "^7.0.0" JTI (id token disimpan di tabel oauth_access_tokens) ada di header dan juga di badan JWT. Memutakhirkan ke versi "^8.0.0" dapat mengurangi token JWT sekitar 100 byte lagi karena mereka menghapus JTI dari header.

Jadi menggabungkan peningkatan ke versi 8 dan jawaban oleh Sreng-s, JWT saya turun menjadi 340 byte. Ini lebih baik daripada 1070 byte yang saya mulai tetapi masih sangat besar mengingat itu dikirim dengan setiap permintaan.

Setiap perbaikan lebih lanjut akan sangat dihargai.

person Daniel    schedule 28.04.2020