微服务之间授权

准备第二个资源服务器

集成feign
resource1
导包
开启feign
写接口-》打注解 加上调用的服务名字
拷贝r2的controller方法
在r1controller调用
访问resource 控制层测试
访问报错没有权限
通过feign接口访问r2没有权限
可以在r1添加feign拦截器添加token
但是微服务多了,每一个都要加拦截器
所以新建一个feign拦截器模块
在feign拦截 模块写一个类实现RequestInterceptor
实现apply方法 拦截请求
方法实现逻辑
1获取r1中请求头
使用请求助手方法获取请求上下文
在获取请求头
在去获取token
2把token加到请求头里面
template.head();
谁要使用就让谁依赖feign拦截模块
r1依赖 测试

集成熔断器
会造成的问题:转发失效,会那拿不到token 隔离模式,线程池导致请求头拿不到 把隔离模式改成信号量,
把线程一的token设置到线程二中
开启熔断器 创建托低方法
使用zuul统一鉴权
如果不去做zuul统一鉴权,那么每个微服务都会去集成auth2
并效率要高些,在zuul,发现没有权限直接打回,不用统一鉴权就要请求到微服务去效验更深一些。
zuul配置 导包
配置资源服务
新建一个类
使用jwt存储token
写一个内部类
复写两个方法
配置资源服务安全性配置
配置web安全配置
根据不同的服务配置权限的不同的范围
配置websecurity 因为zuul没有控制成
直接全部放行
跨域配置
通过zuul获取token
微服务之间授权_第1张图片
通过zuul访问资源
微服务之间授权_第2张图片
zuul解析token后放在security上下文里面
转发用户信息 明文token
定义一个filter
复写三个方法
在run方法里面
使用map把信息封装到map中
权限需要转成list
在资源微服务中:
接收zuul 传过来token的filter定义
不用配置auth2但是要配置security,因为要知道当前用户有什么权限
auth全部放行,不做校验

你可能感兴趣的:(SpringSecurity,spring,spring,cloud)