• 单点登录实现方案


    单点登陆实现方案设计

    整体流程:

    设计思路:

    单点登录涉及 sso 认证中心与众子系统,子系统与 sso 认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成 sso 的客户端,sso 认证中心则是 sso 服务端,整个单点登录过程实质是 sso 客户端与服务端通信的过程,可用下部署图描述:

    sso 认证中心与 sso 客户端通信方式有多种,HttpClient,WebService、rpc、restful
    api 都可以,考虑各系统采用B/S架构,这里我们应用普遍的httpClient即可。

    实现原理:

    SSO Client

    • 拦截子系统未登录用户请求,跳转至 sso 认证中心

    • 接收并存储 sso 认证中心发送的令牌

    • 与 SSO Server 通信,校验令牌的有效性

    • 建立局部会话

    • 拦截用户注销请求,向 sso 认证中心发送注销请求

    • 接收 sso 认证中心发出的注销请求,销毁局部会话

    SSO Server

    • 验证用户的登录信息

    • 创建全局会话

    • 创建授权令牌

    • 与 SSO Client 通信发送令牌

    • 校验 SSO Client 令牌有效性

    • 系统注册

    • 接收 SSO Client 注销请求,注销所有会话

    实现方案:

    主系统(认证中心):

    • 主系统集成认证中心服务sso server,由主系统确认用户的登录操作。

    子系统:

    • 子系统可通过集成sso
      client服务(可通过http请求方式)确定用户是否登录以及用户对应的响应角色信息,用户登录后通过主系统重定向到各个子系统服务。

    无状态交互:

    • 无状态的注册,受权等操作可直接由主系统通过httpclient方式直接向自服务发送请求,具体参见文档:针对第三方系统登录方案设计说明文档.doc
  • 相关阅读:
    JS数组定义及详解
    JS中script词法分析
    JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
    Java面试(1)-- Java逻辑运算符
    Java面试(3)-- Java关系运算符
    让 history 命令显示日期和时间
    mysql 权限管理
    docker基础
    docker 后台运行和进入后台运行的容器
    expect 自动输入密码
  • 原文地址:https://www.cnblogs.com/ldy-blogs/p/10177370.html
Copyright © 2020-2023  润新知