JWT 是干什么?

Jun 28, 2020 pm 04:23 PM
jwt

JWT是目前流行的跨域认证解决方案,其原理是将用户信息通过加密生成Token,每次请求服务端只需要使用保存的密钥验证Token的正确性,进而不用再保存任何Session数据,使服务端变得无状态。

JWT 是干什么?

jwt验证方式是将用户信息通过加密生成token,每次请求服务端只需要使用保存的密钥验证token的正确性,不用再保存任何session数据了,进而服务端变得无状态,容易实现拓展。

加密前的用户信息,如:

{
    "username": "vist",
    "role": "admin",
    "expire": "2018-12-08 20:20:20"
}
Salin selepas log masuk

客户端收到的token:

7cd357af816b907f2cc9acbe9c3b4625
Salin selepas log masuk

JWT 结构

一个token分为3部分:

  • 头部(header)

  • 载荷(payload)

  • 签名(signature)

3个部分用“.”分隔,如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Salin selepas log masuk

头部

JWT的头部分是一个JSON对象,描述元数据,通常是:

{
  "typ": "JWT",
  "alg": "HS256"
}
Salin selepas log masuk

typ 为声明类型,指定 "JWT"

alg 为加密的算法,默认是 "HS256"

载荷

载荷(payload)是数据的载体,用来存放实际需要传递的数据信息,也是一个JSON对象。

JWT官方推荐字段:

  • iss: jwt签发者

  • sub: jwt所面向的用户

  • aud: 接收jwt的一方

  • exp: jwt的过期时间,这个过期时间必须要大于签发时间

  • nbf: 定义在什么时间之前,该jwt都是不可用的.

  • iat: jwt的签发时间

  • jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

也可以使用自定义字段,如:

{
    "username": "vist",
    "role": "admin"
}
Salin selepas log masuk

签名

签名部分是对前两部分(头部,载荷)的签名,防止数据篡改。

按下列步骤生成:

1、先指定密钥(secret)

2、把头部(header)和载荷(payload)信息分别base64转换

3、使用头部(header)指定的算法加密

最终,签名(signature) = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

客户端得到的签名:

header.payload.signature
Salin selepas log masuk

也可以对JWT进行再加密。

推荐教程:《PHP

Atas ialah kandungan terperinci JWT 是干什么?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP Cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP Jun 17, 2023 pm 02:42 PM

Dengan pembangunan Internet, semakin banyak laman web dan aplikasi perlu menyediakan antara muka API untuk interaksi data. Dalam kes ini, pengesahan dan penyulitan API menjadi isu yang sangat penting. Sebagai mekanisme pengesahan dan penyulitan yang popular, JWT dan JWE semakin banyak digunakan dalam PHP. Nah, artikel ini akan menerangkan cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP. Konsep asas JWT JWT adalah singkatan kepada JSONWe

Bagaimana untuk menggunakan ThinkPHP6 untuk pengesahan JWT? Bagaimana untuk menggunakan ThinkPHP6 untuk pengesahan JWT? Jun 12, 2023 pm 12:18 PM

JWT (JSONWebToken) ialah mekanisme pengesahan dan kebenaran ringan yang menggunakan objek JSON sebagai token keselamatan untuk menghantar maklumat identiti pengguna dengan selamat antara berbilang sistem. ThinkPHP6 ialah rangka kerja MVC yang cekap dan fleksibel berdasarkan bahasa PHP Ia menyediakan banyak alat dan fungsi yang berguna, termasuk mekanisme pengesahan JWT. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ThinkPHP6 untuk pengesahan JWT untuk memastikan keselamatan dan kebolehpercayaan aplikasi web

Analisis penjanaan token JWT selamat dan teknologi pengesahan dalam PHP Analisis penjanaan token JWT selamat dan teknologi pengesahan dalam PHP Jul 01, 2023 pm 06:06 PM

Analisis Teknologi Penjanaan dan Pengesahan Token JWT Selamat dalam PHP Dengan pembangunan aplikasi rangkaian, pengesahan dan kebenaran pengguna menjadi semakin penting. JsonWebToken (JWT) ialah standard terbuka (RFC7519) untuk menghantar maklumat dengan selamat dalam aplikasi web. Dalam pembangunan PHP, ia telah menjadi amalan biasa untuk menggunakan token JWT untuk pengesahan dan kebenaran pengguna. Artikel ini akan memperkenalkan penjanaan token JWT selamat dan teknologi pengesahan dalam PHP. 1. Pengetahuan asas JWT dalam memahami cara menjana dan

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Jul 28, 2023 pm 05:27 PM

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Dengan peningkatan aplikasi mudah alih dan trend pemisahan bahagian hadapan dan belakang, OAuth telah menjadi bahagian yang amat diperlukan dalam aplikasi web moden. OAuth ialah protokol kebenaran yang melindungi sumber pengguna daripada capaian yang tidak dibenarkan dengan menyediakan proses dan mekanisme piawai. Dalam artikel ini, kita akan belajar cara membuat pelayan kebenaran OAuth berasaskan JWT (JSONWebTokens) menggunakan PHP. JWT ialah sejenis

Panduan lengkap untuk melaksanakan pengesahan log masuk dalam Vue.js (API, JWT, axios) Panduan lengkap untuk melaksanakan pengesahan log masuk dalam Vue.js (API, JWT, axios) Jun 09, 2023 pm 04:04 PM

Vue.js ialah rangka kerja JavaScript yang popular untuk membina aplikasi web dinamik. Melaksanakan pengesahan log masuk pengguna adalah salah satu bahagian yang diperlukan untuk membangunkan aplikasi web. Artikel ini akan memperkenalkan panduan lengkap untuk melaksanakan pengesahan log masuk menggunakan Vue.js, API, JWT dan axios. Mencipta Aplikasi Vue.js Mula-mula, kita perlu mencipta aplikasi Vue.js baharu. Kita boleh mencipta aplikasi Vue.js menggunakan VueCLI atau secara manual. Pasang axiosax

Analisis mendalam tentang prinsip dan penggunaan JWT (JSON Web Token) Analisis mendalam tentang prinsip dan penggunaan JWT (JSON Web Token) Jan 10, 2023 am 10:55 AM

Artikel ini membawakan anda pengetahuan yang berkaitan tentang JWT Ia terutamanya memperkenalkan apa itu JWT? Apakah prinsip dan penggunaan JWT? Bagi yang berminat, mari kita lihat di bawah ini semoga bermanfaat untuk semua.

Bagaimana SpringBoot menggabungkan JWT untuk melaksanakan kawalan kebenaran log masuk Bagaimana SpringBoot menggabungkan JWT untuk melaksanakan kawalan kebenaran log masuk May 20, 2023 am 11:01 AM

Mula-mula kita perlu mengimport pakej jwt yang digunakan: io.jsonwebtokenjjwt0.8.0com.auth0java-jwt3.2.0 1. Sediakan LoginUser (simpan maklumat pengguna log masuk) dan JwtUserLoginUser.javapublicclassLoginUser{privateIntegeruserId;privateStringusernameString.private set;privateStringuserpassword;privategenerate; ..}JwtUser.javaimp

Pembangunan Golang: Melaksanakan pengesahan pengguna berasaskan JWT Pembangunan Golang: Melaksanakan pengesahan pengguna berasaskan JWT Sep 20, 2023 am 08:31 AM

Pembangunan Golang: Melaksanakan pengesahan pengguna berasaskan JWT Dengan perkembangan pesat Internet, pengesahan pengguna telah menjadi bahagian penting dalam aplikasi web. Kaedah pengesahan berasaskan kuki tradisional telah digantikan secara beransur-ansur dengan kaedah pengesahan berasaskan JWT (JSONWebToken). JWT ialah piawaian pengesahan ringan yang membolehkan pelayan menjana token yang disulitkan dan menghantar token kepada klien. Pelanggan meletakkan token ke dalam Authori apabila menghantar permintaan.

See all articles