jwt有什么用?jwt的token怎么生存的
本文目录
jwt有什么用
JWT是JSON WEB TOKEN的缩写,它是基于 RFC 7519 标准定义的一种可以安全传输的的JSON对象,由于使用了数字签名,所以是可信任和安全的。
JWT token的格式:header.payload.signature
header中用于存放签名的生成算法
{“alg“: “HS512“}Copy to clipboardErrorCopiedpayload中用于存放用户名、token的生成时间和过期时间
{“sub“:“admin“,“created“:1489079981393,“exp“:1489684781}Copy to clipboardErrorCopiedsignature为以header和payload生成的签名,一旦header和payload被篡改,验证将失败
//secret为加密算法的密钥 String signature = HMACSHA512(base64UrlEncode(header) + “.“ +base64UrlEncode(payload),secret)
jwt的token怎么生存的
引入依赖包加密解密方法。在生产环境中,一般jwt会保存用户的名字和角色权限等信息。可以将token写到cookie里,每次前端访问后台时,可以在拦截器或者过滤器取到token,然后解密,先判断是否过期,过期就抛异常阻止其访问。然后取出信息保存到threadLocal里,方便以后调用这些信息,当后台访问完成后,从thredLocal删除此用户信息。服务器认证以后,生成一个JSON格式的对象返回给客户端。之后客户端与服务端通信的时候,都要发回这个JSON对象。服务器完全根据这个对象认证用户身份。
jwt密钥存在哪
jwt一般存在在sessionStorage、cookie或localStorage里。jwt即JSON Web Token,是一种认证协议,一般用来校验请求的身份信息和身份权限。
sessionStorage是会话级存储,关闭页面或浏览器后会被清除;
用cookie存储时需要注意防范CSRF攻击,前网页的URL要与请求目标一致;
用localStorage存储不易受到CSRF的影响,需要通过代码来实现,容易受到XSS攻击。
jwt两个主题、唯一编号不同生成相同的token
摘要Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。
咨询记录 · 回答于2021-10-18
jwt两个主题、唯一编号不同生成相同的token
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。
jwt会不会生成重复的token,只设置主题和唯一ID,主题可能相同、id不同
cess_token 过期设置为15分钟
前端发起请求,后端验证access_token是否过期;如果过期,前端发起refresh_token请求,后端设置已再次授权标记为true,请求成功
前端发起请求,后端验证再次授权标记,如果已经再次授权,则拒绝refresh_token的请求,请求成功
如果前端每隔72小时,必须重新登录,后端检查用户最后一次登录日期,如超过72小时,则拒绝刷新token的请求,请求失败
1.0实现
登录成功,返回access_token和refresh_token,客户端缓存此两种token;
使用access_token请求接口资源,成功则调用成功;如果token超时,客户端携带refresh_token调用中间件接口获取新的access_token;
中间件接受refresh_token的请求后,检查refresh_token是否过期。
如过期,拒绝刷新,客户端收到该状态后,跳转到登录页;
如未过期,生成新的access_token和refresh_token并返回给客户端(如有可能,让旧的refresh_token失效),客户端携带新的access_token重新调用上面的资源接口。
客户端退出登录或修改密码后,调用中间件注销旧的token(使access_token和refresh_token失效),同时清空客户端的access_token和refresh_toke。
后端表
id user_id client_id client_secret refresh_token expire_in create_date del_flag
2.0实现
场景: access_token访问资源 refresh_token授权访问 设置固定时间X必须重新登录
登录成功,后台jwt生成access_token(jwt有效期30分钟)和refresh_token(jwt有效期15天),并缓存到redis(hash-key为token,sub-key为手机号,value为设备唯一编号(根据手机号码,可以人工废除全部token,也可以根据sub-key,废除部分设备的token。),设置过期时间为1个月(redis),保证最终所有token都能删除),返回后,客户端缓存此两种token;
使用access_token请求接口资源,校验成功
jwt哪里可以看token失效
在jwt文件的头文件中可以看token文件失效,Token在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。
jwt单点登录原理
刚才突然想明白了单点登录的token为什么不需要针对每个用户都存一个session。服务器这边准备一个密码字符串,各服务器保持字符串一样。当用户登录一台服务器成功后,服务器将他的账号和密码字符串通过算法整合一下,形成一个新的字符串。通常这个算法会将密码字符串用哈希的方式来处理(即在新的字符串中不知道这个密码是多少),但账号可以直接在新的字符串中拿到。这样,服务器将这个新的字符串给用户(即保存在cookie中,或保存在storage中)。用户每次访问,都会带上这个字符串(类似jsessionid)。服务器这边拿到用户带来的字符串,从中取出账号,将账号和服务器这边存的密码用相同算法整合,形成新的字符串,用这个字符串和用户带来的字符串比对,看是否相同,相同,即通过,不同,让用户去登录。
更多文章:

fedora14 32bit(fedora 14该下载那个文件)
2025年2月11日 23:50

plsql怎么安装步骤?plsql 如何在已有的表中再加一列
2025年2月23日 16:30

bracelet手环(smartbracelet什么牌子手环)
2025年3月22日 17:40

index函数的使用方法python(python如何实现index()功能,不能使用index()、find()函数方法)
2025年2月10日 17:00

msde数据库(安装速达3000std单机版安装msde数据库时安装到一半时出现“指定的实例名无效”的提示,怎么办)
2025年3月20日 10:30

succession是什么意思(perpetual succession是什么意思)
2025年3月19日 00:10

dw入门基础教程(Dreamweaver 初学者 应该怎么学习)
2025年4月5日 10:20

用matlab画函数图像(用MATLAB怎么画含有定积分的函数图像)
2025年2月21日 01:20

infopath怎么用(如何在Infopath的浏览器表单中获取当前用户,并进行视图切换)
2025年4月2日 16:30