Token

news/2024/5/18 13:28:50 标签: token, cookie, JWT, 合理化JWT

token_1">token认证流程

  • 用户登录校验,校验成功后就返回Token给客户端
  • 客户端收到数据后保存在客户端
  • 客户端每次访问API是携带Token到服务端,通常置于header头内
  • 服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

token_7">token缺陷

  • token 一般都是 hash/encrypt 的字符串,会额外附加 加密/解密,需要一定性能开销
  • 无法作废已颁布的令牌
    • 认证发出后的过期时间内难以令其失效或撤销,类似缓存,只能自然死亡
  • 更多的空间占用
    • 放在客户端,需要考虑cookie的空间限制因素
    • 放在localStorage,则可能到受到Xss攻击

合理使用

  • cookie作为存储机制 JWT,并且设置HttpOnly=true
    • 确保只能由服务端保存以及通过自动回传的cookie取得JWT
  • JWT中尽可能只放“够用”的认证信息,其他信息放在数据库,需要时再获取
  • 数字签名,要求发放方验证票据是否合法
  • 关键点
    • 存储与认证,token主要是解决认证的验证问题
    • sessionId在负载均衡时,下一次使用会丢失上次状态,多服务器通信为保持状态一致性,通常会复制sessionID
  • 应用场景
    • JWT适合一次性的命令认证,颁发一个有效期极短的JWT,即使暴露了危险也很小,由于每次操作都会生成新的JWT,因此也没必要保存JWT,真正实现无状态。

cookie_25">http协议中的cookie

  • cookie存储
    • Cookie总是保存在客户端,可存储在内存和硬盘上
    • 内存cookie由浏览器维护,浏览器关闭即消失,也称之为非持久cookie
  • cookie属性
    • Domain:域,表示当前cookie所属于哪个域或子域下面
    • Expire time/Max-age:表示了cookie的有效期
    • secure:表示该cookie只能用https传输
    • httponly:表示此cookie必须用于http或https传输,不允许浏览器脚本访问操作此cookie
  • cookie交互
    • 从服务器端,发送cookie给客户端,是对应的Set-Cookie,发送cookie的各个属性
    • 从客户端发送cookie给服务器的时候,只是发送对应的名称和值,可通过js脚本document.cookie去设置对应的cookie
  • cookie会被附加在每个相应的HTTP请求中

http://www.niftyadmin.cn/n/642342.html

相关文章

MIDlet的框架代码

public class test extends MIDlet { public test()//构造函数 { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException {//当程序结束时,此方法被系统自动调用,可以在此添加释放资源的代码 } protect…

通过Cookie 实现基于Session 的SSO

缘起 简称SSO,在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的其它应用系统应用场景 同一家公司的不同子系统之间的登录认证单点登录实现方式 基于cookie凭证 适用子系统之间主域名一致,如此这般才能让不同子系统之间共享Cook…

面试题:synchronized和lock有什么区别?用新的lock有什么好处?

回答: 1.原始构成 synchronized是关键字,属于jvm层面。 monitorenter,monitorexit(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或者方法中才能调wait/notify等方法…

对一致性Hash算法,Java代码实现的深入研究

2019独角兽企业重金招聘Python工程师标准>>> 一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理…

laravel小札之Gate与Policy

Gate 和 Policy 管理授权逻辑以便控制对资源的访问权限 Gate 提供了简单的基于闭包的方式进行授权Policy 和控制器一样,对特定模型或资源上的复杂授权逻辑进行分组 Gate 与policy区别 Gate 通常用于与模型或资源无关的权限,如访问管理后台Policy 则用于…

Java虚拟机(JVM)寻找Class的顺序

转自:https://blog.csdn.net/e3002/article/details/1017641 Java虚拟机(JVM)寻找Class的顺序 1. Bootstrap classes 属于Java 平台核心的class,比如java.lang.String等.及rt.jar等重要的核心级别的class.这是由JVM Bootstrap class loader来载入的.一般是放置在{…

面试题:你能说说Spring框架中Bean的生命周期吗?

回答: 1、实例化一个Bean --也就是我们常说的new; 2、按照Spring的上下文对实例化后的Bean进行配置 --也就是IOC注入; 3、如果这个Bean已经实现了BeanNameAware接口,会调用接口的setBeanName(String)方法,此处传递的…

常用排序算法(七)归并排序

归并排序 概要 本章介绍排序算法中的归并排序。内容包括:1. 归并排序介绍2. 归并排序图文说明3. 归并排序的时间复杂度和稳定性4. 归并排序实现4.1 归并排序C实现4.2 归并排序C实现4.3 归并排序Java实现 转载请注明出处:http://www.cnblogs.com/skywa…