JWT 是干什么?
JWT是目前流行的跨域认证解决方案,其原理是将用户信息通过加密生成Token,每次请求服务端只需要使用保存的密钥验证Token的正确性,进而不用再保存任何Session数据,使服务端变得无状态。
jwt验证方式是将用户信息通过加密生成token,每次请求服务端只需要使用保存的密钥验证token的正确性,不用再保存任何session数据了,进而服务端变得无状态,容易实现拓展。
加密前的用户信息,如:
{ "username": "vist", "role": "admin", "expire": "2018-12-08 20:20:20" }
客户端收到的token:
7cd357af816b907f2cc9acbe9c3b4625
JWT 结构
一个token分为3部分:
头部(header)
载荷(payload)
签名(signature)
3个部分用“.”分隔,如:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
头部
JWT的头部分是一个JSON对象,描述元数据,通常是:
{ "typ": "JWT", "alg": "HS256" }
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" }
签名
签名部分是对前两部分(头部,载荷)的签名,防止数据篡改。
按下列步骤生成:
1、先指定密钥(secret)
2、把头部(header)和载荷(payload)信息分别base64转换
3、使用头部(header)指定的算法加密
最终,签名(signature) = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
客户端得到的签名:
header.payload.signature
也可以对JWT进行再加密。
推荐教程:《PHP》
以上是JWT 是干什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

随着互联网的发展,越来越多的网站和应用需要提供API接口来进行数据交互。在这种情况下,API身份验证和加密成为了非常重要的问题。而JWT和JWE作为一种流行的身份验证和加密机制,在PHP中的应用也越来越广泛。那么,本文将介绍如何在PHP中使用JWT和JWE进行API身份验证和加密。JWT的基本概念JWT代表JSONWe

JWT(JSONWebToken)是一种轻量级的认证和授权机制,它使用JSON对象作为安全令牌,可以在多个系统之间安全地传输用户身份信息。而ThinkPHP6是一种基于PHP语言的高效、灵活的MVC框架,它提供了许多有用的工具和功能,其中就包括JWT认证机制。在本文中,我们将介绍如何使用ThinkPHP6进行JWT认证,以保障Web应用程序的安全性和可靠

PHP中的安全JWT令牌生成与验证技术解析随着网络应用的发展,用户身份验证和授权变得越来越重要。JsonWebToken(JWT)是一种用于在网络应用中安全传输信息的开放标准(RFC7519)。在PHP开发中,使用JWT令牌来实现用户身份验证和授权已成为一种常见的做法。本文将介绍PHP中的安全JWT令牌生成与验证技术。一、JWT基础知识在了解如何生成与

PHP中的OAuth:创建一个JWT授权服务器随着移动应用和前后端分离的趋势的兴起,OAuth成为了现代Web应用中不可或缺的一部分。OAuth是一种授权协议,通过提供标准化的流程和机制,用于保护用户的资源免受未经授权的访问。在本文中,我们将学习如何使用PHP创建一个基于JWT(JSONWebTokens)的OAuth授权服务器。JWT是一种用于在网络中

Vue.js是一种流行的JavaScript框架,用于构建动态Web应用程序。实现用户登录验证是开发Web应用程序的必要部分之一。本文将介绍使用Vue.js、API、JWT和axios实现登录验证的完整指南。创建Vue.js应用程序首先,我们需要创建一个新的Vue.js应用程序。我们可以使用VueCLI或手动创建一个Vue.js应用程序。安装axiosax

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

首先我们需要导入使用到的jwt的包:io.jsonwebtokenjjwt0.8.0com.auth0java-jwt3.2.0一、准备LoginUser(存放登录用户信息)和JwtUserLoginUser.javapublicclassLoginUser{privateIntegeruserId;privateStringusername;privateStringpassword;privateStringrole;生成getter和setter......}JwtUser.javaimp

Golang开发:实现基于JWT的用户身份验证随着互联网的快速发展,用户身份验证成为了Web应用中至关重要的一部分。传统的基于Cookie的身份验证方式已经逐渐被基于JWT(JSONWebToken)的身份验证方式所取代。JWT是一种轻量级的身份验证标准,它允许服务端生成一个加密的令牌,并将该令牌发送给客户端,客户端发送请求的时候将令牌放入Authori
