码迷,mamicode.com
首页 > 编程语言 > 详细

Spring cloud微服务安全实战-5-6实现授权码认证流程(2)

时间:2019-12-01 00:11:25      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:模式   dir   cat   协议   figure   就是   认证服务   页面   for   

授权服务器,返回给我一个授权码,这里我只需要把授权传回去就可以了。来证明我是这个服务器。
URI的地址传和第一次的地址一样的,认证服务器会比,第一次跳转的请求和第二次申请令牌的请求redirect_uri这个参数是不是一致,如果不一致
就会报错。这样发出请求后 ,就会拿到一个令牌。
技术图片
前端的服务器拿到令牌后还是要回到前端页面
技术图片
跳转到根目录
技术图片
调回来就回有个问题。autenticated现在的值是false,没有一个地方把autenticated设置为true。那么页面一刷新autenticated就是false的。
构造函数一判断autenticated是false就会调走去认证。这样这里就是不停的死循环。
技术图片
解决的方法就是 ,当登陆后把autenticated设置为true,在构造函数内,判断当前是不是登陆了。发一个http请求。发送me方法
技术图片

/me方法

就把tokenInfo返回回去。 已经把tokenInfo放在session里面了。
技术图片

授权服务器代码改造

主要是争对admin这个client加一些配置。
技术图片
之前争对admin这个client只开放了一种授权模式就是password
技术图片
加上authorization_code用逗号和password分隔开。
技术图片
加上这种授权模式以后,就必须要填写上 web_server_redirect_uri这个字段
技术图片
我们在前端 跳过去的时候 传了参数 redirect_uri这个参数 是一个路径
技术图片
那么在认证服务器这边,我也需要把这个路径填进去
技术图片
客户端在做跳转的时候,是一个明文的跳转。这里看到的信息都会出现在浏览器的地址栏。任何人都会看到你的clientId ,redirect_uri这个参数的值
如果我是攻击者就可以利用这个请求发一个一模一样的请求,把跳转的地址改成自己服务器的地址。
技术图片
所以要在服务器端要有一份信息,在客户端跳转的时候 要对比这个信息。admin和 redirect_uri的参数和服务器端一定要能对的上。对的上才去跳转。
技术图片

启动服务测试

认证服务器
技术图片
网关
技术图片
admin应用
技术图片
订单
技术图片

访问客户端应用的地址
技术图片
跳转到了
技术图片

在认证服务器的这里有一些配置继承了WebSecurityConfigurerAdpater
技术图片
在Adpater里面 还有一些默认的安全配置
技术图片
这就是说所有的请求,都必须要身份证以后才能访问 .anyRequest().authenticated()
.formLogin()当前支持表单登陆和.httpBasic登陆
这是认证服务器的默认的安全配置。
技术图片
formLogin就是给你一个登陆表单。让你来登陆。
技术图片
那么你登陆完成后,会再跳转到这个路径上去。
技术图片
form表单的登陆 最终看到的就是这样一个页面。
技术图片
点击提交后,就会勇服务器上我们写的这个去验证。用户名随便写,面是123456
技术图片
验证过以后,会 再次跳转到这个路径上,在跳到登陆页面之前会把这个地址存起来。登陆成功后会再回到这个地址上去。
这个地址会做Oauth协议相关的工作。
技术图片
做完以后,会发一个授权码到我们的前端服务器上
技术图片
我们现在点击登陆
技术图片
这还是在认证服务器上,这是一个授权的过程,
技术图片
read和write这两个授权项,是在数据库内读取出来的。这里是问这两个授权向,要不要给。这个地方实际上是可以忽略掉的,默认把权限给他就行。
技术图片
可以用数据库内的最后一个字段设置为true,就表示默认把所有权限都发出去。能给的权限都发出去。
技术图片
这里也可以写read。这样就默认只发送read的权限。
技术图片
权限都是批准,然后 点击授权 authorize。下次再有登陆行为的时候 就看不到这个页面了。是因为在数据库内已经设置为所有权限默认发送,自动把授权的过程给做了。
技术图片
这行就跳回到了客户端
技术图片

调回的位置就是当时发送的redirect_uri的值。进入到了前端的callback的服务里面。
技术图片
callBack服务发送请求去拿token,存到session里 再跳转到我们的住额上
技术图片

进到这个页面 再去发me请求
技术图片

从session里获取token。
技术图片

有东西就返回信息。authenticated为true 页面就显示出来 了。
技术图片

页面就显示出来了。这就是整个的过程
技术图片
点击按钮获取到了order的信息
技术图片

获取订单的请求的控制台输出
技术图片

这样整个改造完成。

结束





 

Spring cloud微服务安全实战-5-6实现授权码认证流程(2)

标签:模式   dir   cat   协议   figure   就是   认证服务   页面   for   

原文地址:https://www.cnblogs.com/wangjunwei/p/11964528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!