实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效

性,因此要点也就以下两个:1、存储信任 ;2、服务器生产~验证信任 ; 3、拿到服务器再次验证。

单点登录的常见落地实现技术有哪些?

身份认证技术:

1. cas(单点登录)

2. Spring Security OAuth2(第三方登录授权:QQ登陆)

3. jwt (客户端token:原生)

安全控制框架:

1. spring-security

2. shiro:

cas(单点登录)

解决问题:多个系统只需登录一次,无需重复登录

原理:授权服务器,被授权客户端 CS架构

1. 授权服务器(一个)保存了全局的一份session,客户端(多个)各自保存自己的session

2. 客户端登录时判断自己的session是否已登录,若未登录,则(告诉浏览器)重定向到授权服务器

(参数带上自己的地址,用于回调)

3. 授权服务器判断全局的session是否已登录,若未登录则定向到登录页面,提示用户登录,登录成

功后,授权服务器重定向到客户端(参数带上ticket【一个凭证号】)

4. 客户端收到ticket后,请求服务器获取用户信息

5. 服务器同意客户端授权后,服务端保存用户信息至全局session,客户端将用户保存至本地session

6. 默认不支持http请求, 仅支持https 。 生成证书 keytools

缺点:cas单点登录技术适用于传统应用的场景比较多, 官方示例也是以javaWeb为准, 对微服务化应

用,前后端分离应用,支持性较差。

oauth2(第三方登录授权)

解决问题:第三方系统访问主系统资源,用户无需将在主系统的账号告知第三方,只需通过主系统的授

权,第三方就可使用主系统的资源

如:APP1需使用微信支付,微信支付会提示用户是否授权:取消,用户授权后,APP1就可使用微信支

付功能了。

OAuth2是用来允许用户授权第三方应用访问他在另一个服务器上的资源的一种协议,它不是用来做单

点登录的,但我们可以利用它来实现单点登录。

原理:主系统,授权系统(给主系统授权用的,也可以跟主系统是同一个系统),第三方系统。

1. 第三方系统需要使用主系统的资源,第三方重定向到授权系统

2. 根据不同的授权方式,授权系统提示用户授权

3. 用户授权后,授权系统返回一个授权凭证(accessToken)给第三方系统【accessToken是有有效

期的】

4. 第三方使用accessToken访问主系统资源【accessToken失效后,第三方需重新请求授权系统,以

获取新的accessToken】

Resource Server: 被授权访问的资源

Authotization Server:OAUTH2认证授权中心

Resource owner : 资源拥有者

Client:使用API的客户端(如Android 、IOS、web app)

jwt (客户端token)

难度较大,需要你了解很多协议~

Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC

7519).

该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用

来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增

加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

基于JWT认证协议,自己开发SSO服务和权限控制。

SpringSecurity

springSecurity 是spring家族的安全控制框架, 功能非常完善。

Spring Security是能够为J2EE项目提供综合性的安全访问控制解决方案的安全框架。

它依赖于Servlet过滤器。这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安全处

理。

Shiro

spring-boot-starter-springsecurity

特征 spring-security + oauth2 shiro + cas jwt

依赖 jdk、jwt、redis redis、jdk、jwt --

自定义

权限

支持,用户登录后将用户的权限列表

写入认证服务器

支持 , 用户登录后将用户

的权限列表写入客户端 支持

认证服

务集群 -- CAS支持 支持

共享

session

支持 支持 支持

前后端

分离 支持,参数始终携带access_token

支持不够友好,需要改造

CAS服务端 支持

Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理

和加密。

以下是 Apache Shiro 可以做的事情:

1. 验证用户来核实他们的身份

2. 对用户执行访问控制

3. 判断用户是否被分配了一个确定的安全角色

4. 判断用户是否被允许做某事

5. 在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。

6. 在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。

7. 聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。

8. 启用单点登录(SSO)功能。内置了jasig-cas

9. 为没有关联到登录的用户启用"Remember Me"服务。

市面主流的技术搭配

搭配方案一

搭配方案二

技术人员态度: 通吃才对!大家觉得这个课程对大家有帮助吗?敬请关注,下一个文章告诉大家具体的代码实现方案!

单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...相关推荐

  1. 单点登录 cas 设置回调地址_单点登录(SSO)看这一篇就够了

    背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便. 但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多 ...

  2. 单点登录 cas 设置回调地址_cas客户端流程详解(源码解析)单点登录

    博主之前一直使用了cas客户端进行用户的单点登录操作,决定进行源码分析来看cas的整个流程,以便以后出现了问题还不知道是什么原因导致的 cas主要的形式就是通过过滤器的形式来实现的,来,贴上示例配置: ...

  3. 笔记本java设置ip地址_如何设置苹果笔记本IP地址

    在相对于很少使用苹果笔记本的用户来说设置IP地址可能是个难题,下面我将介绍如何设置苹果笔记本IP地址. 1.单击桌面右上角的无线图标,无线网卡自动搜索环境中的无线网络,如下图所示. 2.点击" ...

  4. cas返回mysql数据_单点登录 CAS 5.* - 从数据库获取用户信息 - 4

    前面演示的项目 都是使用的固定用户,现在,可以尝试从数据库获取用户+密码尝试登录, 创建表和数据: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_I ...

  5. Spring Security 入门(3-11)Spring Security 的使用-自定义登录验证和回调地址

    配置文件 security-ns.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

  6. 微信app支付统一下单设置回调地址php,微信支付配置回调地址

    需要超级管理员帐号登录才可操作 1) 所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下: 2) 支付授权目录最多可以设置5个目录 3) 头部要包含http或https,须细化到二 ...

  7. 4g网络设置dns地址_黑群晖nas中tr软件汉化、路由器设置端口转发教程(二)

    一.安装增强汉化web作者最近又更新了,推荐[通过群晖的"任务计划"自动安装及定期自动更新]这个方式安装,更方便,还能自动更新见作者:下载地址见留言,或私信 官方功能介绍:在线查看 ...

  8. uboot 如何设置网关地址_两种网络地址段,如何设置内网和外网一起上?

    一般企业都会有自己内部专用业务网络.及对外的互联业务两个网络,在具体使用过程中,根据业务类型的不同.部门职能的不同而分开使用两种网络. 但在使用过程中总会有特殊情况,就是一台电脑要同时使用两种业务网络 ...

  9. 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升

    无论何时申请上网服务,互联网服务提供商(ISP)都会提供所需的网络设置(包括域名系统(DNS)地址),用户可以使用这些设置来加载喜欢的网站.访问在线服务以及下载文件.但是,它们的DNS服务器往往速度较 ...

最新文章

  1. linux change linux login shell
  2. 虚拟电脑键盘app_说到弹吉他,这几个APP你一定用得上
  3. MySQL慢查询处理之mysqldumpslow和mysqlsla
  4. LeetCode题组:第21题-合并两个有序链表
  5. 算法学习之路|链表元素分类
  6. DataBinder.Eval的基本格式 效率 比较
  7. mysql json函数_Mysql里的JSON系列操作函数
  8. 圣诞节吃饺子时,怎么给女票解释啥是AI?
  9. Visual Studio [即时窗口] [命令窗口] (Immediate Window Command Window) 转
  10. Scikit-Learn (1.Sklearn提供的常用数据集 - 自带的小数据集)
  11. 在文档中怎么画横线实线_怎样在一个word文档中添加一根实线,用作分开不同
  12. Vlad and Unfinished Business (图论)
  13. static, const, static const 与 const static
  14. 像素鸟多线程java_用java Swing做的小游戏像素鸟-Go语言中文社区
  15. Android支付接入(七):Google In-app-Billing
  16. SylixOS 经得起检验的国产操作系统 (四)
  17. 端午节祝福的html,端午节祝福语大全(打油诗版)
  18. 同步传输与异步传输的区别
  19. Android 自有App内部跳转到微信小程序的方法
  20. 验证码有哪些形式,为什么平时登陆要有验证码?

热门文章

  1. VC程序中运行其他程序的三种方法
  2. 领域驱动设计的简略设计步骤
  3. 解决“添加删除程序”里面隐藏问题
  4. oracle入库的速度能到多少_倒车入库别练复杂了,其实就这两点
  5. 必须Mark下,2019 年度中国质量协会质量技术优秀奖
  6. react table里跳转页面_react路由配置基础篇:react-router4.0及以上
  7. 华为鸿蒙发布作文,华为鸿蒙OS定档6月2日发布!MatePad Pro 2或同台亮相:首发预装...
  8. [转载] java:比较运算符
  9. [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
  10. / 卡路里_最大卡路里