`
wangmengbk
  • 浏览: 292164 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

单点登录(SSO)实现逻辑分享

阅读更多

由于企业的应用系统较多,为了是员工实现一个用户信息可以进行登陆到其他系统中,故使用单点登陆(Single Sign On , 简称 SSO ) 进行实现,目前使用的SSO框架为CAX (Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架。

到 CAS 官方网站下载 CAS Server 和 Client,地址分别为:

http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip

http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip

对于具体CAS 的学习可以在官网和网络平台上进行学习研究,在这就不进行多说了,下面主要介绍企业的应用系统的 SSO 实现逻辑,可以对需要实现SSO 的系统提供解决思路。

逻辑实现时序图:



 

 1) 假设现在有两个应用App1和app2,用户已经登录了App1,需要跳转或者直接访问App2中的功能页面。

App1的访问地址为:http://192.168.1.100/app1/;App2的访问地址为:http://192.168.1.101/app2/,需要访问App2的页面为http://192.168.101/app2/action2.action

 

2) 假设用户已经登录了App1,用户需要访问App2的页面,先将跳转(外部访问)请求发送给App1的ssoURLRequestServlet,如上图中的环节①
请求的URL为:http://192.168.1.100/app1/ssoURLRequest?app=app2&url=action2.action

 

3) App1根据ssoURLRequest获取URL信息获取跳转的目标应用为App2,地址为action2.action(相对地址),并根据App2找到该应用的其它信息,比如:应用首页路径,IP地址,context path 等信息,组成访问App2功能页面的绝对路径以及进行SSO登录校验的绝对路径。

 

4) App1的ssoURLRequest获取当前登录用户id(比如工号,保持和app2的相关信息一致),将:用户id+app2+sessionId+uuid 数据经过加密生成Token1凭证并将凭证信息保存到缓存中(内存,集中缓存或者数据库)发送给App2,请求App2生成登录App2的凭证,请求地址为:http://192.168.1.101/app2/tokenGenerat上图中的环节②

 

5) App2接收到生成校验信息请求之后,获取App1发送过来的Token1凭证,请求App1的http://192.168.1.100/app1/tokenValidate,校验Token1是否有效,如上图中的环节③。如果有效,则生成登录App2凭证信(Token2),并将凭证信息保存到缓存中(内存,集中缓存或者数据库),同时将凭证信息加密后返回给App1的ssoURLRequestServlet。

 

6) App1的ssoURLRequestServlet接受到App1返回的登录凭证信息后,将凭证信息返回给发送跳转(访问App2)请求的浏览器,并返回浏览器跳转的脚本,浏览器携带登录凭证信息(密文)跳转至App2,上图中的环节

 

7) App2接收到带有登录凭证的请求后,将凭证信息解密,并校验该凭证信息是否有效,若有效,则根据解密后的凭证信息转换为用户登录信息并保存到session中(或者其他地方),至此实现登录App2,在整个过程中用户不需要输入App2的登录信息就实现了登录App2,上图中的环节

web.xml主要是配置单点登录相关的servlet, 如 CAX 的的集成;

sso-common.xml配置每个应用对应的信息,包括应用ID、Token凭证信息保存方式等;

sso-current.properties配置Token过期时间、Token数据库保存时的数据源定义、Token缓存保存时的Redis定义等。

 

  • 大小: 99.8 KB
分享到:
评论

相关推荐

    SSO单点登录实现与实现原理

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这种技术在现代企业环境中非常常见,因为它提供了便捷的用户体验并...

    跨服务器登录验证(单点登录SSO)过程和Java实现

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入认证信息。这种机制极大地提高了用户体验,减少了用户记忆多套账号密码的困扰,...

    java单点登录sso源码

    Java单点登录(Single Sign-On,SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个应用系统。SSO的核心思想是:用户只需要在一个可信的身份认证中心(Identity Provider,IdP)进行身份...

    ssm redis实现sso单点登录

    总结,使用SSM和Redis实现SSO单点登录,能够简化企业级应用的登录流程,提高用户体验。通过合理的设计和配置,可以构建出高效、安全的SSO解决方案。在这个过程中,Spring Security、Spring MVC、MyBatis和Redis各自...

    .net单点登录sso的实现

    .NET下的单点登录(Single Sign-On,简称SSO)是一种让用户在多个应用系统间自由切换,只需要一次登录验证的身份管理技术。它提升了用户体验,减少了密码管理的复杂性,尤其适用于企业内部或拥有多个子系统的环境。...

    sso单点登录源代码

    SSO(Single Sign-On)单点登录是一种网络认证机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次输入凭证。这种技术极大地提升了用户体验,减少了记忆和输入多个用户名和密码的麻烦,同时也...

    帝国cms oauth2.0 单点登录sso

    在这个“帝国cms oauth2.0 单点登录sso”项目中,开发者可能已经实现了以下功能: - 配置帝国CMS作为认证服务器,支持OAuth2.0授权流程。 - 设计并实现了一个接口,允许其他应用与帝国CMS进行交互,获取和验证令牌...

    exchange邮件系统单点登录整合

    - **IFRAME元素**:该元素的`src`属性应指向内部实现单点登录逻辑的JSP页面。此示例中,`src`属性值为`"/defaultroot/ldap/desktop.jsp"`,这表示IFRAME加载的页面是处理单点登录的关键组件。 - **样式及属性**:...

    sso单点登录实例

    SSO(Single Sign-On)单点登录是一种网络应用的认证技术,它允许用户在一个系统或应用中登录后,无需再次输入凭证即可访问其他关联的系统或应用。这大大提升了用户体验,减少了用户记忆多个密码的负担,同时也有助...

    sso demo 单点登录

    在这个"SSO demo 单点登录"示例中,我们看到使用了SSH(Spring、Struts2、Hibernate)框架来实现这一功能。SSH是一个常见的Java Web开发技术栈,它提供了模型-视图-控制器(MVC)架构、业务逻辑处理和数据持久化的...

    单点登录系统(SSO)+权限管理

    单点登录系统(Single Sign-On,SSO)是一种网络身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在SSO系统中,用户只需要记住一套登录凭据,提高了用户体验,同时减少了密码...

    【转载】CAS实现单点登录(SSO)经典完整教程

    CAS(Central Authentication Service)是一种广泛使用的开放源码的单点登录(Single ...在提供的文档《手把手教你利用CAS实现单点登录.docx》中,你将找到更详细的步骤和示例代码,帮助你更好地理解和实施CAS SSO。

    sso单点登录demo.zip

    在这个"ssso单点登录demo.zip"压缩包中,包含了一个基于Spring Boot、Spring Data JPA和MySQL实现的SSO示例。下面将详细介绍这些关键技术及其在SSO中的应用。 首先,Spring Boot是一个流行的Java框架,用于简化...

    C#单点登录示例程序SSO

    通过理解以上知识点,你可以根据提供的SSO项目源码学习如何在C#环境中实现单点登录功能。该项目可能包括了CAS服务器的实现、子站点的配置以及用户登录、令牌验证的逻辑。通过对这些代码的分析和实践,你将能够掌握...

    C#单点登陆组件源码SSO

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次验证即可访问多个相互关联的系统。在IT行业中,SSO技术广泛应用于企业级应用,提高用户体验,简化管理并增强安全...

    sso.rar_DotNetCasClient.dll_sso_sso 单点登录_单点登录_鍗曠偣鐧诲綍

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证技术,允许用户在一次登录后,无需再次输入凭证即可访问多个相互关联的应用系统。在IT领域,它极大地提升了用户体验和安全性,尤其对于大型企业或组织,管理...

    Jeecg配置单点登录 登录验证完整代码

    在本场景中,我们关注的是Jeecg如何配置单点登录(Single Sign-On,简称SSO)以及相关的登录验证代码。单点登录是一种网络应用架构中的安全机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次...

    SSO完整版跨域单点登录

    SSO(Single Sign-On)是单点登录的缩写,是一种网络用户身份验证的机制,允许用户在一次登录后,可以访问多个相互信任的应用系统,而无需再次进行身份验证。这个压缩包文件提供了SSO的完整实现,适用于跨域场景,...

    Java 单点登录开发教程(SSO)

    在《SSO单点登录Java开发教程(四)自己动手写SSO单点登录服务端和客户端.md》及《SSO单点登录Java开发教程(五)自己动手写SSO单点注销服务端和客户端.md》中,讲解了如何构建这些组件: 1. **服务端**:主要负责用户...

Global site tag (gtag.js) - Google Analytics