彻底了解JWT

本文介绍了JWT(JSONWebToken),一种用于网络应用间安全传输信息的行业标准,重点讲解了其工作原理、如何使用HMAC和SHA256进行签名,以及JWT如何替代Session机制解决存储和集群部署问题。
摘要由CSDN通过智能技术生成

JWT,即 JSON Web Token,定义了一种紧凑的、自包含的方式,用于在网络应用环境间以 JSON 对象安全地传输信息。

JWT 是一个开放的行业标准 RFC 7519。JWT 传输的信息可以被验证和信任,因为它经过了数字签名。

JWT 一般被用来在身份提供者和服务提供者间传递被认证用户的身份信息,以便于从资源服务器获取资源,也可以增加一些额外的业务逻辑所需的声明信息。

JWT 常用于代替 Session,用于识别用户身份。传统上使用 Session 机制区别用户身份有两个缺点:一是占用服务器的存储资源,二是在集群部署下设计会非常复杂。JWT 完全可以解决 Session 方案存在的问题。

签名

//nodejs  签名算法
const crypto = require('crypto')

function sign(info,key){
    const hmac=crypto.createHmac('sha256',key)
    hmac.update(info)
    return hamc.digest('hex')
}
const key='123'
sign('xxx',key)

JWT

const crypto = require('crypto')

function sign(info,key){
    const hmac=crypto.createHmac('sha256',key)
    hmac.update(info)
    return hamc.digest('hex')
}
function jwt(info,key){
    const header={
        type:'JWT',
        alg:'HS256'
    }
const headerStr=Buffer.from(JSON.stringify(header)).toString('base64');
const payloadStr=Buffer.from(JSON.stringfy(info)).toString('base64');
const signStr=Buffer.from(sign(headerStr+'.'+payloadStr,key)).toString('base64').replace(/=/g,'');
return headerStr+'.'+payloadStr+'.'+signStr
}
const KEY='123'

jwt({name:'xxx',age:18},KEY)

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值