目前为止已经完成了完整的用户逻辑

目前的问题是,用户在登陆的时候,用户名提交的是给前端服务器的。每个前端服务器的开发人员都可能接触到前端的用户名密码。
每一个客户端应用都要去处理登陆的逻辑,一单我的登陆逻辑有变化,可能我所有的客户端应用都要去改,重新部署。一个是安全性,一个是耦合
,开发起来会比较麻烦。我们希望的场景是什么呢?


用户在需要登陆的时候,浏览器直接跳到我们的认证服务器上,完成认证这个动作是在认证服务器上来完成的。这样前端服务器(客户端应用)本身完全接触不到用户的用户名和密码,它也不会有登陆的逻辑,登陆的逻辑都是认证服务器上。那么逻辑发生变化的话 只要改认证服务器这一处就可以了。这是我们想要的一个效果。

Resource owner password

写代码之前,先讲一些理论。

适用于App的场景,客户端应用是我可以完全信任他的,我们自己开发的app提供给用户用,用户把用户名和密码输给客户端应用,、
但是这种模式并不适合在web场景下用,因为在web下面。我去填用户名密码的时候,并不是直接填给我自己写的应用的,而是填在一个浏览器的页面上的,浏览器是我自己的客户端应用的一个代理。浏览器没法保证安全性。所以这个模式不适合在web下用。

Authorization code grant

双重认证 一是用户的身份认证,二是客户端的身份认证,
用户的身份认证:一般是让用户去填写用户名和密码‘
客户端的身份认证:客户端发请求的时候带着clientId和ClientSecret


这样没有任何的敏感信息放在浏览器里的,这样就是web环境下最安全的授权模式,

Implicit

一般不会用这种模式,

Client credentials

客户端证书

开始写代码

改成Authorization code grant的模式

之前做的是用户没登陆就显示登陆页面,现在删掉,没登陆直接跳到认证服务器上。

ts的构造函数内判断下,如果没登陆就跳到认证服务器

跳过去的时候,要带着一些参数,这样认证服务器才能知道是哪个客户端应用跳过来的,处理完以后,再调回去。


第四个参数state,记录前端服务器跳走之前客户端应用的状态。可以认为是当前是哪个页面,也可以认为是SPA出了哪个路由上。
实际上就是任意一个字符串来标识当前的状态,认证完成以后,你可以根据这个状态,恢复到应用跳走之前的状态。
这里就写一个abc吧。

回调函数-oath/callback

x现在已经不需要登录了,现在已经是在认证服务器上来完成,所以这里我们直接在login上面去修改。


需要几个参数,首先是授权码。应@RequestParam表示这个参数是一定要有的。

引入日志

我们把传回来的state打印一下

下面就是要向授权服务器发送令牌请求了

结束

Spring cloud微服务安全实战-5-5实现授权码认证流程(1)的更多相关文章

  1. Spring cloud微服务安全实战-3-4 API安全机制之认证(1)

    本节开始讲认证相关的东西.注意事项,出现问题的对应的解决方案. 先写用户注册的服务,注册一些用户信息进去.注册也是我们安全体系的一部分 注册 UserController里面的create方法 先修改 ...

  2. Spring Cloud微服务安全实战_3-7_API安全之授权

    API安全之授权 访问控制: 1,ACL :Access Control Lists,直接给每个用户授权,他能访问什么.开发简单,但是用户多的话,给每个用户授权比较麻烦. 2,RBAC:Role Ba ...

  3. Spring cloud微服务安全实战-3-5 API安全机制之认证(2)

    基于Http协议的认证方式有很多.本节我们只讲一个最简单的HttpBasic认证.聪明就可以看出来,这是一个最基础的认证,好处是简单方便,所有的主流浏览器都支持,问题就是并不是非常安全的,但是帮我们大 ...

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

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

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

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

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

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

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

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

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

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

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

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

  10. Spring Cloud微服务安全实战_4-4_OAuth2协议与微服务安全

    接上篇文章,在这个流程中,PostMan可以代表客户端应用,订单服务是资源服务器,唯一缺少的是 认证服务器 ,下面来搭建认证服务器 项目结构: Pom.xml : DependencyManager ...

随机推荐

  1. vm.$attrs与inheritAttrs详解

    1. inheritAttrs 在vue官网的解释如下 个人理解:父组件A上引入子组件B,在B子组件上加上一些属性(class.style除外),这些属性能否在子组件B的根元素上继承,默认值为true ...

  2. Dubbo源码分析(4):Protocol

    Protocol接口是Dubbo框架的核心组件.Dubbo框架启动protocol接口实现类,由spring的xml文件配置决定.RegistryProtocol协议是Protocol协议的核心,它负 ...

  3. HiveQL 数据装在与导出

    一.向管理表中装载数据 1.向表中装载数据load 1)load语法 2)LOCAL  指的是操作系统的文件路径,否则默认为HDFS的文件路径 3)overwrite关键字 如果用户指定了overwr ...

  4. Luogu4294 【WC2008】游览计划

    斯坦纳树(我也不知道为什么叫这个名字)是一种状压dp的套路,求在无向带花连通图中,选取边使一些特殊点连通起来的最小花费. 具体到这题就是这样的,设\(f_{u,S}\)表示当前根是\(u\),与它连通 ...

  5. Python之☞网络编程中一些概念问题(未完)

    :::一些名词的解释::: 网络: 网络是辅助双方能够连接在一起的工具,使用网络的目的,为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据. 网络协议: 约定俗成的,没有理由. TC ...

  6. manjaro (arch) 安装搜狗输入法

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/sogou_input_install_in_arch_manja ...

  7. Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值

    1.页面代码: 页面引入: bootstrap-select.min.css和 bootstrap-select.min.js. defaults-zh_CN.min.js文件,并初始化下拉选项框. ...

  8. Nginx+Tomcat多实例及负载均衡配置

    Nginx+Tomcat多实例及负载均衡配置 采用nginx的反向代理负载均衡功能,配合后端的tomcat多实例来实现tomcat WEB服务的负载均衡 01 安装nginx服务 安装所需的pcre库 ...

  9. 第06组 Alpha冲刺(1/6)

    队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 宋奕 过去两天完成了哪些任务 主要完成了用户模块接口 具体完成了用户注册登录,忘记.修改密码,修改.查看个人信息 GitHu ...

  10. 在java的Map集合中,怎样更改value的值

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/chenyao1994/article/de ...