zoukankan      html  css  js  c++  java
  • OAuth2与sso的结合思路

    =首次登录============================
    1、用户访问A系统,A系统检查自身的session(第三方系统概念,非统一认证中心概念),发现此人未登录,转到统一认证中心登录检查接口。
    2、统一认证中心检查接口,判断下sso domain下是否存在 access_token,没有表示需要进行首次登录验证。
    3、跳转到登录页面,要求输入用户名,密码,验证码。
    4、验证通过后,
    (1)为A系统生成一个授权码authorization_code
    (2)根据authorization_code+clientId+clientSecret ---->生成 access_token
    (3)将access_token写入sso domain 的cookie中
    (4) 将authorization_code和access_token记录到redis中。
    5、将授权码authorization_code通过ReturnUri跳转给A系统.
    6、A系统获取到授权码后,通过post方式验证授权码(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在则直接返回redis中的access_token值,否则验证是不是合法授权码,正确后,生成access_token返给A系统。
    7、A系统确认authorization_code正确,并获取到access_token后,可以实现自己的内部逻辑,比如记录session等。
    =二次访问其它系统=====
    1、用户访问B系统,B系统根据自身的检查逻辑判断,发现此人没有登录,转到统一认证中心登录检查接口。
    2、统一认证中心检查接口,判断下sso domain下是否存在 access_token,存在,表示已经在其它系统中登录过了。
    3、
    (1)为B系统生成一个授权码authorization_code
    (2)根据authorization_code+clientId+clientSecret ---->生成 access_token
    (3) 将authorization_code和access_token记录到redis中。
    4、将授权码authorization_code通过ReturnUri跳转给B系统.
    5、B系统获取到授权码后,通过post方式验证授权码(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在则直接返回redis中的access_token值,否则验证是不是合法授权码,正确后,生成access_token返给B系统。
    6、B系统确认authorization_code正确,并获取到access_token后,可以实现自己的内部逻辑,比如记录session等。
    刷新token====
    1、在SSO中需要重写domain下的cookie值access_token.
    2、

    注销登录=====
    1、各系统通过类似于redis的方式,对于access_token进行保存,以后的内部程序的访问,不必到统一认证中心检查access_token的有效性。
    2、提供退出接口,方便sso进行调用,统一实现退出逻辑。调用后,删除本地的redis中access_token

  • 相关阅读:
    Graphviz安装配置
    固定ip
    机器学习基础
    研究生入学感悟
    复试临时练习
    复试临时练习
    Dev-C++回文数遇到的小麻烦
    单例模式
    工厂方法模式
    Spark的checkpoint详解
  • 原文地址:https://www.cnblogs.com/littlehb/p/12451514.html
Copyright © 2011-2022 走看看