jwttoken解码_JWT: 基于Token的验证

本文探讨了基于Token的验证,特别是JWT(Json Web Token)的使用,它在无状态、可扩展性和跨域问题上的优势。JWT自身包含了验证所需信息,避免了后端保存session的需求,同时能在Token中存储元数据。然而,需要注意JWT的大小限制、存储位置的安全性以及防止XSS和XSRF攻击。
摘要由CSDN通过智能技术生成

现在SPA(Single Page Application, 单页面应用)和前后端分离已经是主流. 基于Token的验证非常适合这种构架.

Difference between Token-based Auth and Cookie-based Auth

基于Cookie的验证

基于Cookie的验证是有状态的 (stateful). 前后端都要为验证保存状态: 后端要保存active session的信息, 前端要用cookie保存sessionId. 流程如下:用户输入登录信息

服务器验证后, 创建session并保存到数据库

带着sessionId的cookie保存到浏览器中

接下来的所有请求, 后台通过cookie携带的sessionId以找到对应的session.

用户登出时, 前后端都要销毁session

基于Token的验证

近些年SPA, web API, 和IoT(Internet of Things, 物联网)的崛起带动了基于Token的验证, 通常就是指JWT(Json Web Token)

JWT是无状态的(stateless), 后端不必保存有关session的信息. 后端只需要验证每次请求中携带的Token即可验证请求的真实性.

Token通常以Bearer {JWT}的形式保存在Authentication header中, 也可以放到POST body或query parameter中.

流程如下:用户输入登录信息

服务器验证后, 返回一个签名(signed)的token. 该token存储在前端, 通常在localStorage中, sessionStorage或cookie也可以.

接下来的请求中token被加到Authentication Header中, 或者POST body / query parameter中.</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准(RFC 7519)。它是一种轻量级的安全传输方式,用于在网络应用间传递声明信息。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 头部包含了关于令牌的元数据和加密算法的信息,通常由两部分组成:令牌类型(即JWT)和所使用的签名算法(如HMAC SHA256或RSA)。 载荷是JWT的主要内容,包含了一些声明信息,如用户ID、角色、权限等。载荷可以自定义,但建议只包含一些非敏感的信息,因为JWT是可解码的。 签名是对头部和载荷进行加密生成的,用于验证JWT的真实性和完整性。签名需要使用头部中指定的算法和密钥进行生成,接收方可以通过验证签名来确保JWT没有被篡改。 生成JWT token的过程如下: 1. 创建一个包含所需声明信息的JSON对象。 2. 使用Base64编码头部和载荷,形成两个字符串。 3. 将两个字符串用点号连接起来,形成一个未签名的JWT。 4. 使用指定的算法和密钥对未签名的JWT进行签名,生成签名字符串。 5. 将签名字符串添加到未签名的JWT末尾,形成最终的JWT token验证JWT token的过程如下: 1. 将接收到的JWT token按点号分割为头部、载荷和签名三部分。 2. 使用相同的算法和密钥对头部和载荷进行签名,生成一个新的签名字符串。 3. 将新生成的签名字符串与接收到的签名进行比较,如果相同,则说明JWT token是有效的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值