APA ITU JWT ( JSONウェブ・ページトークン) ?


Konsepトークン


seperti namanya,json web token,yang berarti token ini menggunakan json(JavaScript Object Notation),lalu token ini memmemgkinkan ita untuk mengirimkan data yang dapat diverifikasi oleh dua pihak atau lebih
Agar Levh Pham ,マリKa Bahas Bagaimana JWT Bekerja melalui Contoh :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1hIjoiRmFxaWgifQ.jtYrULLMxWPWfy39r4Qm0gCxo-5–542VhsRDSO5cjQ
ジカ北perhatikanダラムテムズacak di atas、terdapat titikヤンMemisahkan teks tersesしかし、Menjadi 3 Bagian.

ヘッダー


Bagian Pertama病denganヘッダー.ヘッダーBerisi Informasi Tentang AlalgormaダンJenisトークンYang Digunakan.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
BagianインニHanyalahストリングYang di encode Menggunakan Base 64.Jadi Kita bisa mendapatkan nilai asli dari teks terses以外のdengan男性Decdendenya.大連のBIISAは、ウェブをデコードします.
Nilai Yang di dapat dari teks terseasしかしadalah :
{"alg":"HS256","typ":"JWT"}

ペイロード


Bagian Kedua病気DenganペイロードペイロードBerisiデータYang ingin dikirim melaluiトークン
eyJuYW1hIjoiRmFxaWgifQ
Bagianインニjuga di encode menggunakan base 64,ダンデータyang didapat dari hasilデコードnya adalah:
{"nama":"Faqih"}
ダラムPenerapannya di otentikasi atau pun otorisasi、biasanyaデータは、BerupaデータヤンsifatnyaユニックBagiユーザー、seperti:電子メール、ID/UUID、ダンjugaデータYang Berkaitan Dengan Otorisasi seperti役割、カレーナデータTerseasが、Akan Digunakan SebagaiタンダペンゲニアンSi Pengirimトークンです.
オハイオ州、Jangan Pernah MenyelipkanデータYang - sifatnya konfidentit atau感度tike haram jwt(seperti password)Sepertiヤンカリアンbaru saja pelajari、北bisaのlihat isinya cukup dengan男性Decodenya.

署名


Bagianケティアダラ署名.署名adalah hash gabungan dari header , payload an sebuah秘密鍵( berupa string random panjang biasanya ):
jtYrULLMxWPWfy39r4Qm0gCxo-5–542VhsRDSO5cjQ
AlignitmaハッシュYang Digunakan Mengiktiダリapaヤンsudah ditentukan di dalamヘッダー.Jadi Dika ' s Unude Metbuat Signature , Mka Kurang Levih Akan Seperti - ini :
// Contoh menggunakan bahasa PHP. Titik di PHP adalah cara menggabungkan string (concatenation)
$signature = hash(base64_encode($header).base64_encode($payload).$secret)
カタタン:コーデdi atas hanya ilustrasiダンbukan kodeヤンsebenarnya.
シグネチャーのための私達のBerguna untuk memverifikasi bahwaヘッダmaupunペイロードヤンエイダDaramトークンtidak berubah dari nilai aslinya(karena untuk membuat payload an header palsu itu cukup mudah).
署名nya sendiri tidak mungkin dapat diakali,karena sudah dalam berbentuk hash;ヤンマナadalah fungsi satu arah(tidak dapat bkbalialikan ke nilai semula),ダンmeski北tahu algoritma hya nya,喜多juga memlukanカンキーキーyang mana hanya si pembuat aplikasi yang tahu

カーラケルハVerifikasi署名


ジカコーランPernah Membuat OtentikasiビアズMenggunakan電子メール/ユーザー名ダンパスワード、マカの大連のティダックは、Lagi Denganを進めています.
サッシュ・ハッシング、華麗な旋律
// function hash password dalam PHP
$hash = password_hash('password_user', PASSWORD_BCRYPT);
pada kode di atas,喜多のmembuatハッシュパスワードユーザーmenggunakan algoritma bcryptハッシュIini lah楊金子simpan ke dalamデータベース.
Lalu SAATユーザーログイン、カリアンMencocokkanストリングパスワードYang diinputユーザーDenganハッシュヤンAda diデータベースseperti - ini:
// function verifikasi hash password dalam PHP
$cocok = password_verify($input_user, $hash_dari_db);
// $cocok akan bernilai true jika passwordnya benar
ハルインニjuga miripパダsaat verifikasi jwt.
saat membuat署名
$signature = password_hash(base64_encode($header).base64_encode($payload).$secret, PASSWORD_BCRYPT);
カタパード:Kulan Hanya sebagai ilustrasi、Jangan ditiru!
lalu saat user mengirimkanトークン、BISA Ka - Ck Menggunakan function seperti ini :
function verify($token, $secret) {
  // Memisahkan header, payload, dan signature
  list($header, $payload, $signature) = explode('.', $token);
  // Mencocokkan apakah header dan payload saat ini masih sama seperti yang ada di signature (tidak berubah)
  return password_verify($header.$payload.$secret, $signature);
}
// Menggunakan function
$cocok = verify($jwt_dari_user, $secret_yang_dipakai_saat_hash);
Dengan Demikian、Apabila TerdapatデータヘッダーATauペイロードYang Diubah、Otomatis Tidak Akan Lagi Cocok dengan signaturenya.秘密のキーDalamは、Hashingnyaを提出します.

Penerapan Oleh dua pihak atau chen lebih


INI Merupakan Alasan Mengapa JWTディビュバット畝
パダOtentikasi/Otorisasi Uumnya Ka Manggunakanセッション、ヤンマナKetikaユーザーログインke sebuahウェブ、マカサーバAkan Menyimpanデータ利用者tersebutしかし.
データセッションYang Tersimpan ITU Akan Digunakan Untuk Melakukan Verifikasi OtentikasiMemastikanユーザーsudahログインatau belum、ダンOtorisasi ;Memastikan HAKは、ユーザーYangログインをします.
コンドデン屋
$sudah_login = $_SESSION['login'] === true;
$adalah_admin = $_SESSION('role') === 'admin';
if ($sudah_login) {
  if ($adalah_admin) {
    echo 'Selamat datang admin!';
  } else {
    echo 'Selamat datang user!';
  }
} else {
  echo 'Silahkan login';
}

sejauh ini tidak ada masalahNamun、Jika Kaalian Memiliki dua aplikasi atau lebihダンingin bisa berbagi session,tentu menggunakan session biasa tidak memungkinkan,karena session user hanya disimpan oleh web site yang digunakan user untukログインsebelumnya.

nah、di sinilahペランJWT.
Karena有効なTidaknya JWT Bisa Diviifikasi Secara Mideri Menggunakan署名、ini memungkinkan untuk aplikasi lain menggunakanトークンtersesが、asalkan memiliki秘密キーYang Sama.
Lalu、KarenaカサスカサカスAdalah Untuk Otentikasi/Otorisasi、マカAplikasiサーバーB juga harus menyimpanデータユーザーYang Sama di Databasenya.
Setelah Verifikasi JWT DIサーバB Berhasil、Kita Bisa Lanjut Melakukan Pengecekan HAKUUIDは、電子メール、ダンの役割、Dengan kodaのada adaデータベース、ダンseterusnya.
Jadi Singkatnya、トークンHasilダリAplikasiサーバーA、dapat digunakan juga oleh aplikasiサーバB .

ケシパル


ダ・ペムバスハ・ディ・アタス,マカ・キタダート
  • JWT Dapat Memastikan IntegritasデータYang dikirim(データヤンエイダdi dalamトークンtidak dapat dihandasi)
  • JWT Dapat digunakan untuk otentikasi/otorisasi dua aplikasi yang berbeda
  • ペナント


    Genitulah penjelasan tentang konsep darjjt,ダンbagaimana jwt bisa menjaga integritasデータyang dikirim olehユーザSemoga bisa bermanfaat bagi yang baru belajar
    John Ada Yang Masih dibingungkan Atau in Ingine MengkritisiダンMememkan Saran , Jangan Lupa untuk Mengirimkanya di Komentar
    Pada Tulisan selanjutnya saya akan membats tentang bagaimana cara menyimpanトークンjwt yang baik di frontend(biasanya untuk aplikasi spa)を持ちます.