Gateway微服务网关&JWT
2020-07-31 14:31:03 7 举报
AI智能生成
Gateway网关微服务结合JWT使用
作者其他创作
大纲/内容
微服务网关Gateway
概述
微服务(多个)的统一入口
客户端直接与网关交互:
可以减少认证次数
降低跨域请求的处理难度
提高了微服务的灵活性与复用性
微服务网关微服务搭建
1.创建网关微服务maven工程
2.pom.xml文件导入jar包坐标
详情
3.创建启动类
GatewayApplication
4.resource包下创建配置文件
application.yml
微服务网关跨域
在网关配置文件application.yml添加设置
详情
微服务网关过滤器
ip黑白名单拦截
特定地址拦截
资源拦截等
全局过滤器
自定义:
需要实现GlobalFileter、Ordered两个接口
复写filete、getOrder两个方法
order方法中return的数字越小则该过滤器的优先执行等级越高
局部过滤器
在配置文件中配置即可
网关限流
为什么限流?
减轻服务器压力
例:逛淘宝,中午、下午等下班之后服务器的访问压力会飙升
网关层限流统一给微服务做限流,无需在为服务层为每个微服务做限流
化繁为简
限流手段
令牌桶算法
常见的限流算法之一
如何实现限流
1、所有经过网关的请求需拿到令牌才会被请求
请求被处理完后其持有的令牌会被直接删除
2、可根据流量大小设置网令牌桶添加令牌的速率
3、令牌桶可设置最大放置令牌限制
超出令牌桶可容纳最大值的令牌会被丢弃
桶中令牌数量处于最低值时,就算持有该令牌的请求被处理完了,当前令牌也不会马上被删除
用来保证足够的限流
流程图
令牌桶算法的实现
Guava(读音:瓜哇)
Redis客户端
令牌桶应用
1、pom文件导入redis依赖
spring-boot-starter-data-redis-reactive
2、application.yml配置文件中配置
详情
burstCapacity:
令牌桶总容量
replenishRate
令牌桶每秒填充平均速率
key-resolver
用于限流的键的解析器的 Bean 对象的名字。它使用 SpEL 表达式根
据#{@beanName}从 Spring 容器中获取 Bean 对象。
据#{@beanName}从 Spring 容器中获取 Bean 对象。
3、引导类中添加限流key代码
详情
漏桶算法
计数算法
限流思路:
未达到流量阀值
放行请求
达到流量阀值
拦截请求给出友好的提示信息
BCrypy密码加密
目前较为流行的密码加密方式有两种
BCrypt
更为安全
内部引入了加盐机制
盐:
随机生成的含29个字符的字符串
会与密码合并生成密文
盐每一次的值都不同
不可逆
不能反运算
MD5
加密算法
可逆算法
加密后,密文可以返现解密得到密码原文
对称加密
加密、解密使用同一个密钥
解秘方需要事先知道密钥才能解密
优点
算法公开
计算量小
加密速度快
加密效率高
缺点
没有非对称加密安全
密钥泄露或丢失了就失去了保密作用
用途
保存用户手机号码、身份证等铭感但能解密的信息
常见的堆成加密:
AES
DES
3DES
Blowfish
IDEA
RC4
RC5
RC6
HS256
非对称加密
有公开密钥,简称公钥:publickey和私钥:keypair
公钥加密
给信任的客户端
只有私钥才可以解密
私钥解密
自己保存
私钥加密
持有公钥或私钥才可以解密
签名
持有私钥签名,持有公钥进行验证是否被篡改过
优点
相对对称加密,其安全性更好
缺点
加密和解密耗时长、速度慢,只适用于对少量数据进行加密
用途
一般用于签证和认证
私钥服务器保存,用于加密
公钥客户拿着用于对令牌、签名解密或校验使用
常见的非对称加密算法
RSA
DSA
数字签名用
ECC
移动设备用
RS256
采用SHA-256 的 RSA 签名
不可逆算法
加密后无法反向解密得到原文
种类
Hash加密算法
散列算法
摘要算法等
用途
校验现在文件的正确性
存储用户的密码、卡号等不可解密的信息
常见不可逆加密算法
MD5
SHA
HMAC
JWT实现微服务鉴权
JWT
json web token
一种可以在用户与服务器之间传递安全可靠信息的规范
组成
头部
Header
描述JWT的基本信息
载荷
playload
存放有效信息
签名
signature
签证信息
header(base64编码后的)
payload(base64编码后的)
secret
JJWT签发与验证token
创建token
添加依赖
jjwt
测试类
详情
解析token
详情
设置过期时间
详情
0 条评论
下一页