当前位置: 首页 > news >正文

JAVA理论第十八章-JWT杂七杂八

JWT

JSON Web token 检查JWT ,是用于对应用程序上的用户进行身份验证的标记。也就是说,使用JWTS的应用程序 不再需要保存有关其用户的cookie或其他session数据。此特性便于 可伸缩性,同时保存应用程序的安全。
在身份验证过程中,当用户使用其凭据成功登录时,将返回JSON Web token,并且 必须在本地保存(通常在本地存储中)。
每当用户要 访问受保护的路由或资源(端口)时用户代理(user agent)必须连同请求一起发送JWT,通常在授权标头中使用Bearer schema。 后端服务器接收带有JWT的请求时,首先要做的是验证token

6.1 组成

一个JWT实际上就是一个 字符串,它由三部分组成: 头部载荷签名
头部(Header)
头部用于描述关于 该JWT的最基本的信息,例如 其类型以及签名所用的算法等。这也可以被表示成一个JSON对象
{"typ":"JWT","alg":"HS256"}
在头部指明了签名算法是 HS256算法。我们进行 BASE64编码(http://base64.xpcha.com/),编码后的字符串如下:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
载荷(playload)
载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三部分:
1.标准中注册的声明(建议但不强制使用)
iss:jwt签发者
sub:jwt所面向的用户
aud:接收jwt的一方
exp:jwt的过期事件,这个过期时间必须要大于签发时间
nbf:定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token
2.公共的声明
公共的声明可以添加任何的信息,一般填加用户的相关信息或其他业务需要的必须信息。但不建议添加敏感信息,因为该部分在客户端可解密。
3.私用的声明
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密,意味着该部分信息可以归类为明文信息。
这个指的就是自定义claim。比如前面那个结构举例中的admin和name都属于自定的claim。这些claim跟JWT标准规定的claim区别在于:JWT规定的claim,
JWT的接收方在拿到JWT之后,都知道怎么对这些标准的claim进行验证(还不知道是否能够验证);而private claims不会验证,除非明确告诉接收方要对这些claim进行验证以及规则才行。定义一个payload:
然后将其进行base64加密,得到Jwt的第二部分。

杂七杂八:

Ribbon的七种负载均衡策略

  1. 轮询模式按照一定顺序来依次调用服务实例
  2. 权重策略:根据每个服务的响应时间分配一个权重,响应时间越快,权重越大刚开始是使用轮询模式并开启一个计时器,每一段时间收集一次所有服务提供者的平均响应时间,然后再给每个服务提供者提供一个权重权重越高被选中的概率也就越大
  3. 随机策略:从服务提供者的列表中随机选择一个服务实例
  4. 最小连接数策略:选取连接数最小的服务实例
  5. 重试策略:按照轮询获取服务,如果服务实例试下,则在指定的时间之内不断的进行重试来获取服务
  6. 可用性敏感策略:先过滤掉非健康的服务实例,然后在选择连接数较小的服务实例
  7. 区域敏感策略:根据服务所在区域的性能和服务的可用性来选择服务实例,在没有区域的环境下,该策略和轮询策略类似

利用Sentinel处理微服务雪崩问题的四种常见方式

什么是雪崩?
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩
一个服务无法正常工作 其他依赖于它的微服务也会跟着无法正常工作,这种 连锁反应就叫做雪崩
处理雪崩主要有三方面 预防雪崩缓解雪崩解决雪崩

1.预防雪崩:

流量控制限制业务访问的QPS(QPS: 每秒钟处理的请求的数量),避免服务因流量的突增而故障(预防雪崩)
比如设置QPS=2,就是每秒钟最多处理两个请求

2.缓解雪崩

超时处理设定超时时间,请求超过 一定时间没有响应就返回错误信息,不会无休止等待(但是不能解决根本 只能缓解) 因为 如果释放的资源没有进入的快

3.解决雪崩

舱壁模式限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离(资源浪费的情况)
我们把服务器中的 资源划分为一个个的线程池给每个业务分配了一个线程池。比如服务A中业务1分到了10个 业务2分到了10 业务1依赖服务B,就是 意味着它最多用10个线程去访问服务B。如果此时服务B发送故障,那么这个业务会阻塞占用我们的线程,但是最多只占用我们的10个线程,我们 服务A的其他业务还能继续使用
熔断降级:由断路器 统计业务执行的异常比例,如果 超出阈值则会熔断该业务,拦截访问该业务的一切请求。(能解决资源浪费的情况,这是一种比较好的方案)
统计服务A里的业务执行情况,根据业务访问的服务中的 异常比列来决定是否熔断,如果异常比例超出阈值,则将其熔断
服务A还要 继续访问该服务则会被拦截,会 快速失败直接释放资源
先熔断后降级
FILE
http://www.xdnf.cn/news/1041427.html

相关文章:

  • Visualized_BGE 安装—多模态嵌入技术
  • Java 复习题选择题(1)(Java概述)
  • LLMs 系列实操科普(5)
  • 【卫星通信】Skylo与ViaSat标准建议详解:基于NB-IoT NTN通过GEO卫星实现IMS语音通话的解决方案
  • springboot在线BLOG网
  • SCADA|信创KingSCADA4.0历史报警查询的差异
  • 永磁同步电机控制算法--双矢量模型预测转矩控制MPTC(占空比)
  • [直播推流] 本地创建 nginx服务器
  • DataHub 架构设计与模块规划
  • 深度解析SpringBoot自动化部署实战:从原理到最佳实践
  • Android 安卓应用分身多开 适用于没有自带分身多开的Android设备,隐藏应用、应用锁、私密相册等管理,解锁永久Vip会员功能
  • 【精华】这样设计高性能短链生成系统
  • 记利用AI模型制作DataDump Scripts生成工具
  • 理解 C++ 的 this 指针
  • Seata与消息队列(如RocketMQ)如何实现最终一致性?
  • 【构建】CMake 构建系统重点内容
  • springboot音乐网站与分享平台
  • MySQL-DML语句深度解析与实战指南
  • 60天python训练计划----day52
  • Golang 在 Linux 平台上的并发控制
  • LeetCode - LCR 173. 点名
  • 基于深度学习的人类活动识别模型研究:HAR-DeepConvLG的设计与应用
  • 【大厂机试题解法笔记】恢复数字序列
  • Python开发功能实用
  • 关于钉钉的三方登录
  • 项目管理工具在并行管理中如何充分发挥作用
  • Python 使用 DrissionPage 模块进行爬虫
  • 【Linux网络】多路转接之select
  • windows 开发
  • JavaScript性能优化实战指南:从理论到案例的全面解析