changgou-day09

目标

  • 理解 【单点登录】
  • 理解【第三方登录】
  • 掌握实现单点登录的技术
    • CAS
    • shiro
    • spring security + jwt
    • oauth2.0(掌握的),也能实现第三方的登录,授权
  • 最终的解决方案:spring cloud security + jwt +oauth2.0+RSA算法实现畅购的单点登录和授权。
  • oauth2.0
    • 授权模式
    • 角色
  • 掌握解决方案的思路。

    1 单点登录

    1. 用户只需要登录一次,就可以访问相互信任的系统。这种解决方案就是 单点登录(SSO).
    实现单点登录的技术:
    1. 1.自定义实现 利用token机制。
    2. 2.CAS
    3. 3.shiro
    4. 4.spring security +jwt
    5. 5.oauth2.0
    1609634769415.png

    2 第三方登录

    就是通过第三方的软件来进行登录。
    实现第三方认证的技术解决方案:(oauth 2.0)
    使用oauth2.0实现第三方的认证的例子。changgou-day09 - 图2

    3 oauth2.0

    1. oauth2.0是一种协议,允许用户授权 第三方 访问其他的系统。
    官方的流程:
    changgou-day09 - 图3 ``` 角色:
  • 客户端
  • 资源拥有者
  • 认证服务器
  • 资源服务器 客户端 请求 资源拥有者 授权 资源拥有者 授权客户端 客户端 去认证服务器申请令牌 客户端携带令牌 到资源服务器 获取资源
    1. <a name="Jdqs2"></a>
    2. ### 4 搭建认证服务器
    3. 参考工程
    4. <a name="UC4xu"></a>
    5. ### 5 授权模式
    1.授权码模式(Authorization Code) * 2.隐式授权模式(Implicit) 3.密码模式(Resource Owner Password Credentials) * 利用密码模式实现单点登录。 4.客户端模式(Client Credentials)
    1. 认证的表结构:用于存储客户端的注册的信息<br />![](https://cdn.nlark.com/yuque/0/2021/png/12589476/1636038878452-453864da-1489-46f0-959a-e453ee95ae59.png#id=x8knU&originHeight=688&originWidth=1178&originalType=binary&ratio=1&status=done&style=none)
    2. <a name="G0Xwk"></a>
    3. ### 6 公钥和私钥
    公钥 和私钥 秘钥对: 非堆成加密算法 RSA算法 私钥 加密 公钥进行【校验】 公钥 加密 私钥进行【解密】
    1. <a name="PVZPb"></a>
    2. ### 7 认证流程说明
    3. ![](https://cdn.nlark.com/yuque/0/2021/png/12589476/1636038878578-f7f632ee-42a8-4bc9-bee8-000ca69e24b3.png#id=pWsoa&originHeight=463&originWidth=1084&originalType=binary&ratio=1&status=done&style=none)
    4. <a name="fHlIH"></a>
    5. ### 8 认证(登录并申请令牌流程)
    6. ![](https://cdn.nlark.com/yuque/0/2021/png/12589476/1636038878663-58457848-4ad5-49ad-bf27-9bb16826a7cf.png#id=uB34x&originHeight=393&originWidth=1273&originalType=binary&ratio=1&status=done&style=none)
    1.用户打开页面 2.输入用户名和密码 3.认证服务器接收到用户 请求 获取到用户名和密码 4.认证服务器作为客户端 发送请求 去认证服务器 申请令牌 5.传递参数(usernme,password ,grant_type(写死),client_id(写死),client_secret(写死)) 6.认证服务器颁发了令牌给 客户端(认证服务器) 7.将数据进行处理好了之后,返回给页面(1.放到cookie)
    1. <a name="yyAgg"></a>
    2. ### 9 认证服务器项目结构
    3. ![](https://cdn.nlark.com/yuque/0/2021/png/12589476/1636038878762-0636f801-a389-492e-966a-53ce8344b07b.png#id=Tftkt&originHeight=574&originWidth=1177&originalType=binary&ratio=1&status=done&style=none)
    https://projects.spring.io/spring-security-oauth/docs/oauth2.html ```