JWT实现API网关统一认证应用

JWT实现API网关统一认证应用

  1. 环境
    nacos: 1.3.1

启动nacos

cd /usr/local/nacos/bin

sh startup.sh -m standalone

2.自定义网关配置
1)添加依赖

加入nacos-discovery发现服务的依赖、web、actuator用于监控检查,添加网关、hystrix容错、lombok、shiro支持、jwt支持依赖。

在这里插入图片描述
在这里插入图片描述

2)修改配置文件

配置nacos注册中心地址,自动注册、配置允许跨域请求、网关拦截路由、JWT跳过认证的路由、有效时长

在这里插入图片描述

3)配置JWT的网关过滤器

使用@ConfigurationProperties注解获取配置文件中跳过认证的路由

在这里插入图片描述

配置返回数据ReturnInfo的bean,用于页面标识认证成功,认证失败等信息数据传回页面,配置JWTModle存放用户信息
在这里插入图片描述
在这里插入图片描述

重写GlobalFilter接口中的filter方法,判断访问的url是否有配置文件中的跳过认证的路由,有则不进行认证,获取Header头部信息的Token若为空,则需进行认证,不为空则要对Token检查是否过期
在这里插入图片描述

认证错误输出,响应信息设置状态码为HttpStatus中未认证的状态码,响应信息设置为json类型,返回认证错误的json数据到页面

在这里插入图片描述

3.JWT 的工具类
1)Token的加密Key方法

自定义密钥KEY,使用Base64对KEY进行加密,使用MD5算法加密

在这里插入图片描述

2)生成Token的方法

使用Jwts设置Id、Payload(负载)为Token添加iss (issuer):签发人、签发时间、exp (expiration time):过期时间和签名、Claims、Subject
在这里插入图片描述

3)Token解码

在这里插入图片描述

4)验证Token是否过期

对Token进行解码,获取解码后的subject,获取过期时间并输出到控制台的info

在这里插入图片描述

4.添加认证的api接口
1)定义用户数据的bean

在这里插入图片描述

获取配置文件中配置的effective_time过期时间
在这里插入图片描述

2)定义api接口
在这里插入图片描述

3)启动类nacos发现

在这里插入图片描述

5.测试登录授权认证效果
1)登录认证

通过拦截进入https://www.sina.com.cn/的路由,会提示未登录认证Token
在这里插入图片描述

使用Post方式发送User的json数据进行登录认证请求获取token

在这里插入图片描述

通过复制data中的Token再一次进入访问sina的路由,并在Header添加Token为data中的Token值以Get方式发送,就可以进入访问到https://www.sina.com.cn/新浪首页

在这里插入图片描述

这里得effctive_time设置为1min,所以1min后再次使用Token访问会提示Token已过期,控制台输出Token过期时间
在这里插入图片描述

在这里插入图片描述

2)测试路由跳过验证

访问http://localhost:2225/baidu,则不需要进行Token认证,直接就会由网关转发到相关的id为baidu的路由
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值