现在有多个 WebApp,想用最小的代价实现 SSO 单点登录。所谓最小代价,我的理解就是对原有 WebApp 的改动最小,因此

  • 在旁路增加一个 SsoWebApp 用于管理 SSO 的账号,进行身份认证后实现跳转原有 WebApp;
  • 保留原有 WebApp 登录方式不做修改,增加一个单独的 sso 登录接口实现从 Ssoweb App 跳转登录。

具体的登录流程如下:
用户首先在 SsoWebApp 中完成登录,再通过链接清单,选择要跳转的目标 WebApp 的 sso 接口,为方便通过超级链接跳转,建议这个接口使用 GET 方式,当然要用 POST 方式也是可以的。
跳转链接示例

 http://WebApp1/sso?token=eyJ1aWQiOiIxMjM0NTYiLCAiZXhwaXJlIjoiMjAyMjA3MTUiLCAic2FsdCI6IjlENDdDRTI3LTU1MzEtNDRENS05QUUxLTVEMUQ3OUU2QUZFOCJ9

这里 token 的明码采用 json 描述

{
"uid":"123456", //用户账号
"expire":"20220715235900", //token 有效期
"salt":"9D47CE27-5531-44D5-9AE1-5D1D79E6AFE8" //其他数据
}

为防止 token 被纂改,可使用 RSA 私钥签名后 Base64 编码。

当 WebApp 的 sso 接口接收 token 后调用 SsoWebApp 的公钥解密方法还原出 json 进行判断

if (当前WebApp内存在(uid) && expire >= 当前时刻)
调用 WebApp 自己的登录验证方式,完成对 uid 的身份认证,进行正常的页面跳转
end if

要实现以上登录流程,旁路的 SsoWebApp 需要实现

  1. 用户账户的 CURD UI, 关键字段 uid, password
  2. 用户账户下 SSO 记录的 CURD UI,关键字段 uid, appName, ssoUrl
  3. 用户登录 UI 和显示可用 SSO 站点列表 UI(跳转链接)
  4. WebAPI 接口,提供公钥解密方法

以上 SSO 登录方案存在的一个不足,是用户在 SsoWebApp 的退出操作无法联动 WebApp 退出,反之亦然。

因为要实现登出联动,不可避免地需要改造 WebApp 的原有登出接口,可以实现只不过需要花费额外的代价了。

最小代价的 SSO 单点登录方案的更多相关文章

  1. CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  2. php sso单点登录原理阐述

    原理:就是用户登录了单点登录系统(sso)之后,就可以免登录形式进入相关系统: 实现: 点击登录跳转到SSO登录页面并带上当前应用的callback地址 登录成功后生成COOKIE并将COOKIE传给 ...

  3. CAS实现SSO单点登录原理(转)

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  4. [精华][推荐]CAS SSO 单点登录框架学习 环境搭建

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

  5. [精华][推荐] CAS SSO单点登录环境搭建及实例

    1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下: 2.进入目录C:\Windows\System32\drivers\etc 3.修改hosts文件 12 ...

  6. CAS SSO单点登录框架学习

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

  7. CAS SSO单点登录实例

    1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下: 2.进入目录C:\Windows\System32\drivers\etc 3.修改hosts文件 12 ...

  8. sso单点登录系统(解决session共享)

    场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服 ...

  9. 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录

    在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...

  10. oauth2.0实现sso单点登录的方式和相关代码

    SSO介绍 什么是SSO 百科:SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他 ...

随机推荐

  1. Android Spingboot 实现SSE通信案例

    SSE SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接 ...

  2. 分享一个idea的文档汉化插件

    展示效果: 如何获取:

  3. 【Vue】自己编写排名组件

    一.需求分析 这里我是用Echarts的柱状图,倒置下y轴x轴就实现了,然后产品说跟UI不一致 我一看UI这种又给我整不会了,然后想拿Echarts改改参数搞定,同事和群友都是说自己做,不要用Echa ...

  4. 【BatchProgram】 读取文本批量创建目录

    NameList.txt文件内容 FILE-NAME-A FILE-NAME-B FILE-NAME-C ... 根据上面文件批量创建对应的目录,且附加序号 CMD代码: @ECHO OFF SETL ...

  5. 【Spring-Mail】

    需要的pom依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>sp ...

  6. 【转转】 Huber Loss

    原文地址: https://www.cnblogs.com/nowgood/p/Huber-Loss.html ============================================ ...

  7. 【转载】 Nature再发DeepMind研究:AI复现大脑网格细胞模拟导航!

    原文地址: https://news.eeany.cn/news/416675-19.html ==================================================== ...

  8. [COCI2015-2016#1] UZASTOPNI 题解

    前言 题目链接:洛谷. 题意简述 一棵有根树,节点数 \(n \leq 10^5\),每个点有权值 \(v_i \leq 2000\),现在选出一些点,满足: 一个点的父亲点若未被选择则其不能被选择. ...

  9. IntersectionObserver + scrollIntoView 实现电梯导航

    电梯导航也被称为锚点导航,当点击锚点元素时,页面内相应标记的元素滚动到视口.而且页面内元素滚动时相应锚点也会高亮.电梯导航一般把锚点放在左右两侧,类似电梯一样.常见的电梯导航效果如下,比如一些官方文档 ...

  10. Dolphinscheduler Docker部署全攻略

    作者| 陈逸飞 Docker部署的目的是在容器中快速启动部署Apache Dolphinscheduler服务. 先决条件 docker-compose docker 使用容器单机部署Dolphins ...