首先把地址给它

发送post请求,请求的数据就是这个entity对象。

最后返回的值要封装到TokenInfo里面

如果一切正常的话就会拿到一个响应的实体,实体里面就包含了TokenInfo

打印实体到控制台。最终返回response的body

审计日志



跟在Oauth的过滤器后面  所以这里是2

模拟进来的时候插入一条数据。

授权的过滤器

授权的过滤器稍微复杂一点。要把主干逻辑写一下


判断当前的请求是不是需要身份认证,或者是需不需要做权限的判断。
生成isNeedAuth

拿到tokenInfo

之前在OAuth的Filter里面认证成功后 设置了Attribute

不为空且是 激活状态的

没有拿到认证的信息 就写个日志,处理错误。

处理一个401的错误。

能拿到用户信息,下一步就要判断权限。如果没有权限那么就报403的错误。

生成一个随即的整数 和2 取模,只有两种情况,一种是1 一种是0. 也就是有有50%可能被 403状态码拒掉。 50%的可能性会通过。

handlerError

最终要返回json的ContentType

相应的状态码

处理小bug

token的请求不做认证,token请求永远不会有tokenInfo
如果请求的URI不是以/token开头的

另外一个修复。这里是一个变量,而不是一个写死的字符串。

先不写限流,限流一会单独说。

启动服务测试

启动gateway

启动orderAPI

先去拿token


用拿到的token调用,创建订单的方法


是有一半的几率的。

故意把令牌改成错的

错误的令牌报401

不传令牌


50%的几率,调用正常。

说明我们现在写的业务逻辑时生效的,我们在网关这 把权限控制了。现在就可以把订单服务里面和安全相关的逻辑去掉。包括先关的代码
这些逻辑去掉后,我们之前说的那些问题。比如说安全的逻辑和业务逻辑耦合,安全逻辑一遍导致业务逻辑重新部署,包括随着业务接节点增加,你们安全信息也在这里面。业务节点节点增加。认证服务器压力增大等等这些问题。都被解决掉了

去掉订单服务安全的相关代码

首先去掉Oauth2的依赖。


所有和安全相关的代码都删掉。


当前用户的信息使用这个注解来拿到的。现在这个注解依赖都被删掉了 那么如何拿到当前用户的信息

比如我想拿到用户名,那么用户信息从哪里来。从RequestHeader里面

在网关授权往下走的之前 ,设置header。这里也可以传json对象,

启动测试

启动oderApi和网关

还是调这个创建订单的服务,要多试几次,因为是50%的几率是200

来看一下orderAPI的日志

拿到用户信息。但是用户信息是放在请求头里传的是一个明文

后面还会讲一些方案,在服务之间传递用户信息。

结束

Spring cloud微服务安全实战-4-10Zuul网关安全开发(三)的更多相关文章

  1. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  2. Spring Cloud微服务安全实战_00_前言

    一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介:  二.最终形成的架 ...

  3. Spring cloud微服务安全实战_汇总

    Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...

  4. Spring cloud微服务安全实战-4-9Zuul网关安全开发(二)

    把在微服务里面写的安全的相关逻辑挪到网关里面来.这样把安全逻辑和业务逻辑解耦开.那么这些问题就都解决了. 先来看下之前的安全的代码,首先在之类做了认证,认证服务器去认证,拿这个token去换用户信息. ...

  5. Spring cloud微服务安全实战-4-8Zuul网关安全开发(一)

    安全相关的代码和业务逻辑相关的代码实际上是在一个应用里面的,在这个应用里面,我们需要去,这个应用本身的处理逻辑里面需要去处理令牌和用户信息之间的转换. 然后我们需要去知道认证服务器的地址,这些都是耦合 ...

  6. Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

    上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...

  7. Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务

    实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  8. Spring cloud微服务安全实战 最新完整教程

    课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...

  9. Spring cloud微服务安全实战-6-8sentinel限流实战

    阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...

  10. Spring cloud微服务安全实战-6-4权限控制改造

    授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...

随机推荐

  1. python_并发编程——事件

    1.事件 :通过一个信号来控制多个进程同时执行或者阻塞. 一个信号可以使所有的进程都进入阻塞状态,也可以控制所有的进程接触阻塞,一个事件被创建之后,默认是阻塞状态. from multiprocess ...

  2. CUDA并行程序设计 开发环境搭建与远程调试

    课题需要用到GPU加速.目前使用的台式电脑只有核心显卡,而实验室有一台服务器装有NVIDIA GTX980独显.因此,想搭建一个CUDA的开发环境,来实现在台式机上面开发cuda程序,程序在服务器而不 ...

  3. winform DateTimePicker 设置成秒

    C# Windows窗体应用中,用到时间选择控件DateTimePicker,发现不能选择时分秒,难道要自己写一个控件?! 答案是否定的,通过属性修改是可以选择时间的,DateTimePicker完全 ...

  4. Linux 服务器用户间ssh免密码登录

    1.本脚本为服务器用户间密码互信登录脚本 2.依赖 需要安装expect工具 3.使用 sh CreateUserssh.sh hadoop hadoop /home/hadoop/.ssh 三个带入 ...

  5. leetcode 712

    这道题的思路:我是根据最长公共子序列的思路得来的. 最长公共子序列是: d[i][j]表示字符串s1前i个(0-i-1)字符,和字符串s2前j个(0-j-1)字符的最长公共子序列. 分情况讨论: 当s ...

  6. Day11:Flex布局

    参考: 来源:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 网页布局是css的一个重点. 盒子模型 display属性 positi ...

  7. 域渗透复盘(安洵CTF线下)

    复盘线下域渗透环境Write Up 0x01 外网web到DMZ进域 外网web入口 joomla应用   192.168.0.5 反序列化打下来 GET /index.php HTTP/1.1 Ho ...

  8. Android中显式意图和隐式意图的区别

    1.显式意图 可以直接通过名称开启指定的目标组件: 通过构造方法Intent(Context packageContext,class<?>cls)来实现. button_1 = (But ...

  9. java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

    一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...

  10. CEF3开发者系列之Cookies管理和共享<转>

    原帖地址:https://www.cnblogs.com/guolixiucai/p/6994559.html 涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产 ...