jwt对spring cloud进行系统认证和服务鉴权

阅读数:201 评论数:0

跳转到新版页面

分类

python/Java

正文

什么是jwt

(json web token)jwt是一生中用来在网络上声明某种身份的令牌(TOKEN),它的特点是紧凑且自包含并且基于JSON,通过一些常用的算法对包含的主体令牌进行加密,安全性高。它通常有三个部分组成:头令牌(Header)、消息体(Payload)、签名(Signature).Header通常用来声明令牌的类型和使用的算法,Payload主要用来包含用户的一些令牌,Signature部分则是将Base64编码后的Header的Payload进行签名。

在微服务架构下,通常有单独一个服务Auth去管理相关认证,为了安全不会直接让用户访问某个服务,会开放一个入口服务作为网关gateway,只允许外网网关,所有请求首先访问gateway,由gateway将请求路由到各个服务,spring cloud下通常使用zuul来实现网关。

如何实现登录、刷新、注销

1、登录

在验证身份信息后可以使用工具包例如jwt根据用户信息生成token,设置有效时长,最后将token返回给客户端存储即可,客户端只需要每次访问时将token加在请求头里即可,然后在zuul增加一个filter,此filter来过滤请求,如果是登录获取toke则放行,其他的话用公钥解密验证token是否有效。

2、刷新

则需要在生成token时生成一个refresh token,在登录时和token一并返给客户端,然后由客户端保存定时使用refresh token和token来刷新获取新的token。为了安全起见,服务器可能需要缓存refresh token,每次刷新token都将生成新的refresh token和token,服务器需要将老refresh token替换,客户端保存新的token和refresh token来进行之后的访问和刷新。

(1)refresh token存在的意义

由于token会伴随每次请求,而refresh token只需要重新刷新token时才传输,所以refresh token的获取难度大于access token获取的难度。

如果access token有效值设置的过长有安全风险,如果设置的过短,用户体验不好,增加refresh token机制,是一种安全性与易用性的平衡。

3、注销

首先在登录时生成token和refresh token后,需要将token也进行缓存,刷新时更新token缓存,最后对zuulFilter进行优化,在解密时先从缓存中查找token是否存在,如果没有直接拒绝,如果有再解密验证有效时长。在注销时只需要删除缓存 的token记录就好。




相关推荐

ZuulProxyAutoConfiguration 首先我们看一下zuul的配置类ZuulProxyAutoConfiguration, 这个类有一项工作是初始化Zuul默认

Tomcat Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能有很大关系的。Tomcat默认的HTTP实现是采用阻塞式的Socket通信,每个请求都需要创

Eureka Server在运行期间会去统计心跳失败比例在15分钟之内是否低于85%,如果低于85

JJWT 全称Java Json Web Token。 而JWT是一种在两方之间传输信息的方法,在jwt的主体中编码的信息被称为claims。jwt的扩展形式是json,因此每个c

mvn依赖 <dependency> <groupId

Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图表化界面。 修改service-hi 1、在pom工程文件引入相应的依赖</

简介 Spring cloud Sleuth主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持zipkin,你只需要在pom文件中引入相应的依赖即可。 1、

简介 在spring cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程git仓库中,在该组

一、JAVA项目中网络接口调用工具 1、HttpClient 它是Apache Jakarta Common下的子项目,用来提供高效、最新的、功能丰富的支持Http协议的客户端编程工具包。 HttpC

在网络请求时,可能会出现异常请求,如果还想在异常情况下使系统可用,那么就需要容错处理。 Spring Cloud Feigh就是通过Fallback实现的,有两种方式: <