专栏首页艾编程单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?

单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?

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

性,因此要点也就以下两个: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"服务。

市面主流的技术搭配

搭配方案一

搭配方案二

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是单点登录,主要会应用于哪些场景?

    单点登录在大型网站里使用得非常频繁,例如,阿里旗下有淘宝、天猫、支付宝,阿里巴巴,阿里妈妈,阿里妹妹等网站,还有背后的成百上千的子系统,用户一次操作或交易可能涉...

    艾编程
  • JVM垃圾算法和GC三算法及面试题分享

    本期课程的内容概要:熟悉JVM架构与GC垃圾回收机制以及相应的堆参调优,有过在linux进系统调优的经验。

    艾编程
  • 艾编程Gavin老师课堂笔记:FastDFS配置文件参数详解

    # 这个配置文件是否不生效,呵呵(改成是否生效是不是会让人感觉好点呢?) false 为生效(否则不生效) true反之

    艾编程
  • 一文详解 Websocket 的前世今生

    keep-alive 是通知服务器,在这个 HTTP Request/Responset 结束后,不要立即断开 TCP 连接(注意是TCP连接,和HTTP没有关...

    杰哥的IT之旅
  • 阿里面试官:分别说说微信和淘宝扫码登录背后的实现原理?

    扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的。

    乔戈里
  • python使用socket创建tcp服务器和客户端

    分别在python2.7和python3.6下测试。在启动时需要先启动服务器端,在启动客户端。

    公众号---志学Python
  • ZooKeeper 会话

    在 ZooKeeper 中,客户端连接,是指客户端和服务器之间的 TCP 长连接。

    happyJared
  • 用Scala实现一个简单的Python的上下文管理器

    上下文管理器是对try/finally模式的简化,保证一段代码运行完后执行某项操作,即使那段代码被中止了,也会执行指定的操作。在这篇文章将展现函数式编程的威力,...

    哒呵呵
  • 《Kotlin极简教程》第二章 Hello,World 函数函数

    一个会写诗的程序员
  • 泛函编程(4)-深入Scala函数类

    既然是泛函编程,多了解一下函数自然是免不了的了: 方法(Method)不等于函数(Function) 方法不是函数但可以转化成函数;可以手工转换或者由编译器(c...

    用户1150956

扫码关注云+社区

领取腾讯云代金券