首先把地址给它

发送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. c语言1博客作业08

    一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/9982 我在 ...

  2. python - Django 跨域配置

    一:settings 中间件配置路径 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.s ...

  3. 洛谷 AT2434 JOI 公園 (JOI Park) 题解

    人生第一次AC黑题,我太感动了. 每日一题 day31 打卡 Analysis 先跑遍DJ,求出1到 i的最短路.得到每个点到 1号点的距离后,从小到大排序一遍,这时便可以枚举每个点到 1号点的距离修 ...

  4. Oracle CAST() 函数 数据类型的转换

    CAST()函数可以进行数据类型的转换. CAST()函数的参数有两部分,源值和目标数据类型,中间用AS关键字分隔. 以下例子均通过本人测试. 一.转换列或值 语法:cast( 列名/值 as 数据类 ...

  5. FTP与HTTP上传文件的对比

    许多站点,比如facebook或一些博客等都允许用户上传或下载文件,比如论坛或博客系统的图片. 在这种情况下,通常有两种选择上传文件到服务器,那就是FTP协议和HTTP协议. 以下列出了一些两者的不同 ...

  6. HTML5新增常用标签

    1.header 标签定义文档的页眉(介绍信息). <body> <article> <header> <h1>What Does WWF Do?< ...

  7. AtCoder Grand Contest 019 题解

    传送门 \(A\) 咕咕 int a,b,c,d,n,t; int main(){ scanf("%d%d%d%d%d",&a,&b,&c,&d,& ...

  8. Mac laravel: command not found

    如果用的oh-my-zsh 安装laravel 提示找不到.可以试试下面的 export PATH=$HOME/bin:/usr/local/bin:~/.composer/vendor/bin:$P ...

  9. Ubuntu系统下,pip3安装python3的pymysql包 报错的问题

    sudo pip3 --version 查看pip3的版本 sudo pip3 install --upgrade pip 更新pip3 sudo pip3 list  查看安装的包列表 如上图, p ...

  10. Lua chunk文件结构

    1.lua执行经过: xx.lua源码文件------->执行(lua虚拟机) 隐式调用luac编译器 我们可以直接用luac命令去编译lua源码文件,然后用编译后的文件运行在lvm(lua虚拟 ...