导航:首页 > 编程语言 > 单点登录ssojava

单点登录ssojava

发布时间:2022-11-12 22:01:07

1. java web应用如何实现单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。实现单点登录需要两个部分的合作:统一的身份认证服务和修改Web应用,使得每个应用都通过这个统一的认证服务来进行身份效验。

2. java sso 单点登录 怎么传值给其他应用

通过接口进行通讯,在其他应用中编写一个接口来公其他应用调用以获得其他应用传递的数据

3. 单点登录出现错误!

单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。

目前的企业应用环境中,往往有很多的应用系统,如办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等等。这些应用系统服务于企业的信息化建设,为企业带来了很好的效益。但是,用户在使用这些应用系统时,并不方便。用户每次使用系统,都必须输入用户名称和用户密码,进行身份验证;而且应用系统不同,用户账号就不同,用户必须同时牢记多套用户名称和用户密码。特别是对于应用系统数目较多,用户数目也很多的企业,这个问题尤为突出。问题的原因并不是系统开发出现失误,而是缺少整体规划,缺乏统一的用户登录平台,使用SSO技术可以解决以上这些问题。

4. CAS单点登录原理分析(一)

一,业务分析

在分布式系统架构中,假设把上述的三个子系统部署在三个不同的服务器上。前提是用户登录之后才能访问这些子系统。那么使用传统方式,可能会存在这样的问题:

1.当访问用户中心,需要用户登录帐号

2.当访问购物车,还需要用户登录帐号

3.当访问商品结算,又一次需要用户登录帐号

访问每一个子系统都需要用户登录帐号,这样的体验对于用户来说是极差。而使用单点登录就可以很好地解决上述的问题。

二,单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的 session 是无法解决的,我们需要使用相关的单点登录技术来解决。

第一步 :用户访问应用系统1。过滤器判断用户是否登录,没有登录,则重定向(302)到认证系统去进行认证操作。

第二步 :重定向到认证系统,显示登录界面,用户输入用户名密码。认证系统将用户登录的信息记录到服务器的session中。

第三步 :认证系统给浏览器发送一个特殊的凭证ticket,浏览器将凭证交给应用系统1,应用系统1则拿着浏览器交给他的凭证ticket去认证系统验证凭证ticket是否有效。凭证ticket若是有效,将用户信息保存到应用系统1的session中一份,并告知应用系统1,用户通过认证。

第四步 :用户通过认证,浏览器与网站之间进行正常的访问。

第五步 :当用户再次访问应用系统1,由于应用系统1的session中有用户信息,所以就不用经过认证系统认证,就可以直接访问应用系统1了。

第六步 :当用户再去访问其他应用系统时,浏览器会带着凭证ticket过去,其他应用系统到认证系统验证凭证,凭证ticket若是有效,将用户信息保存到其他应用系统的session中一份,并告知其他应用系统,用户通过认证。

第七步 :用户通过认证,浏览器与网站之间进行正常的访问。

第八步 :当用户再次访问其他应用系统,由于其他应用系统的session中有用户信息,所以就不用经过认证系统认证,就可以直接访问其他应用系统了。

三、Yelu大学研发的CAS(Central Authentication Server)

1.什么是CAS?

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

【1】开源的企业级单点登录解决方案。

【2】CAS Server 为需要独立部署的 Web 应用。这个CAS框架已经提供

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括Java, .Net, php, Perl, Apache, uPortal, Ruby 等。

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图是 CAS 最基本的协议过程:

2.CAS的详细登录流程

该图主要描述

1.第一次访问http://shopping.xiaogui.com

2.在登录状态下第二次访问http://shopping.xiaogui.com

3.在登录状态下第一次访问http://pay.xiaogui.com

下面对图中序号代表的操作进行说明

当用户第一次访问http://shopping.xiaogui.com

序号1: 用户请求http://shopping.xiaogui.com,会经过AuthenticationFilter认证过滤器(在cas client 的web.xml中配置)

主要作用:判断是否登录,如果没有登录则重定向到认证中心。

大概知道这个就行,CAS的具体实现会在以后的博客中写道

序号2:  AuthenticationFilter发现用户没有登录,则返回浏览器重定向地址。

重定向的地址就是认证服务器CAS Server的地址,后面的参数是我们请求的客户端地址,这个参数目的就是为了认证成功以后,根据这个参数的地址重定向回请求的客户端

序号3:  浏览器根据响应回来的重定向地址,向cas.xiaogui.com认证系统发出请求

序号4:  认证系统cas.xiaogui.com接收请求,响应登陆页面

序号5: :用户登陆页面输入用户名密码,提交请求

序号6: :CAS Server 认证服务器接收用户名和密码,就行验证,验证逻辑CAS Server 已经实现,并响应给浏览器信息

这里的用户名,密码不需要关心,后续会讲到

图中1,2部分表示序号5 输入的用户名,密码,以及发出的请求。当认证服务器验证通过之后,根据请求参数service的值,进行重定向,其实就是回到了请求的客户端,同时会携带一个ticket令牌参数。同时会在Cookie中设置一个TGC,该cookie是网站认证系统cas.xiaogui.com的cookie,只有访问这个网站才会携带这个cookie过去。

*****注意:这个携带TGC的Cookie是实现CAS单点登录的关键所在!

Cookie中的TGC:向cookie中添加该值的目的是当下次访问cas.xiaogui.com认证系统时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。

TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)

TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。

ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。也就是上面数字3处的ticket值。

序号7:  客户端拿到请求中的ticket信息,也就是图中1的位置

然后经过一个ticket过滤器,去认证系统CAS Server判断ticket是否有效

这个过滤器的主要工作就是校验客户端传过来的ticket是否有效

CAS Client 客户端  shopping.xiaogui.com  中web.xml的配置

序号8:  向CAS Server认证系统发出验证ticket的请求,也就是图中2的位置,然后执行ticket验证

序号9:  通过校验之后,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中,同时告知客户端ticket有效。当用户再次访问该客户端,就可以根据Cookie 中的SessionID找到客户端的Session,获取用户信息,就不用再次进行验证了。也就是图中响应给浏览器的部分。

序号10:  shopping.xiaogui.com客户端接收到cas-server的返回,知道了用户已经登录,ticket有效,告知浏览器可以进行访问。

至此,用户第一次访问流程结束。

当用户第二次访问http://shopping.xiaogui.com

序号11: 当用户第二次访问,仍然会经过AuthenticationFilter过滤器,但与第一次访问不同的是此时客户端session中已经存在用户的信息,浏览器中的Cookie会根据SessionID找到Session,获取用户信息,所以不需要进行验证,可以直接访问。

序号12:  客户端告知浏览器可以进行访问。

当用户第一次访问http://pay.xiaogui.com

序号13:   用户向pay.xiaogui.com  CAS Client客户端发出请求

序号14:  :pay.xiaogui.com接收到请求,发现第一次访问,于是给他一个重定向的地址,让他去找认证中心登录。

序号15: 浏览器根据上面响应的地址,发起重定向,因为之前访问过一次了,因此这次会携带上次返回的Cookie:TGC到认证中心。

序号16:  认证中心收到请求,发现TGC对应了一个TGT,于是用TGT签发一个ticket,并且返回给浏览器,让他重定向到pay.xiaogui.comCAS Client客户端。

序号17: 根据上面响应回来的地址,进行重定向到pay.xiaogui.comCAS Client客户端

序号18:  pay.xiaogui.comCAS Client客户端带着ticket去认证中心验证是否有效。

序号19:  认证成功,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中。当用户下次访问pay.xiaogui.comCAS Client客户端,直接登录,无需验证。

序号20:  告知浏览器可以进行访问

CAS单点登录的原理分析大致就是上述的这些,至于CAS单点登录的具体实现,将在下篇博客中写道。

5. 谈谈单点登录

寒假学习的小课题,把之前的笔记整理整理记录一下(长文警告)因为当时看到的东西涉及很多,所以有一些地方没有深入去探讨。

网络:单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
简而言之就是用户在多个相互信任的应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。这里的关键是一次登录,以及一次退出,都对所有的系统生效。

在普通的登录中,比如典型的B/S情景,浏览器访问服务器,发送登录请求,在发送完用户名和密码之后,服务器会生成该用户的session来标准该用户的状态,比如已登录还是已注销,并给一个cookie给浏览器,因此,用户继续访问就会带上这个cookies,服务端会根据这个Cookie找到对应的session,通过session来判断这个用户的登录状态。比如php中使用phpsessid。当然也可以自定义session的生命周期,session的生命周期过长的话一旦session被盗用就会出现用户被窃取的情况。同时,生命周期过长的session配置会占用较多的服务器资源。

单点登录主要针对同平台下多应用,多系统的情景下多次登录的一种解决方案。单点登录相当于将多个应用的认证体系联通。
假设现在一个平台上有3个都带有登录功能的应用,由上面的普通登录的情况可以想到,这3台服务器都会自己的记录session。那么要想达到单点登录,一个最简单的方法就出现了:共享session。

共享session的方式来实现单点登录是最方便也是最直接的。在三个子系统中,使用同一个额外的记录session的服务器,比如我们可以使用一个redis服务器来存储三个系统的session。

用户登录了应用1,获取了应用1返回的cookies,再次访问应用1的其他功能的候携带了cookie就是已登录的状态了,但是这样又有新的问题,虽然实现了共享session,但是用户登录了应用1,获取了应用1返回的cookie,但是因为cookie是无法跨域的,因此用户无法使用应用1的cookie去访问应用2。这里我们就需要将系统的全局cookie domain的属性设置为顶级域名,比如应用1的域名是1.test.com,应用2的域名是2.test.com。在普通登录的情况下,应用1的cookie domain的属性是1.test.com,指这个cookie只能在该子域名上被使用。我们将系统的全局cookie domain设置为顶级域名,即.test.com,这样就可以实现用户登录了应用1,之后可以以已登录状态访问应用2和3。
上面的共享session的情况是三个应用都有登录功能,还有一种类似的情况是应用1和应用2都有登录模块和其他模块,还有一个单独的SSO系统,是仅有登录模块的:

共享session的方法虽然简单,但是存在局限性,因为使用了cookie顶域的特性,所以不能做到跨域。一个公司或者一个平台很可能不是所有的域名都在在一个一级域名之下的,所以同域名下的单点登录并不是完整的单点登录。

先说说openid,openid是一种认证标准,规定如何认证的标准!即其关注的是登录时身份的认证。官方给出的一个场景,其中一方是一个openid身份服务器,用来存放注册好的openid账号,另一方是受这个openid身份服务器信赖的服务或应用。openid协议就是提供openid身份服务器和被信赖的服务或应用之间的通信的。比如我们在很多网站上可以使用QQ登录,这里的腾讯的QQ就是openid的身份服务器,我们所要登录的网站就是受信赖的服务或应用。
在使用openid实现单点登录的方法有很多,可以使用上面共享session的方法,即把openid带在cookie里面,但是这样也会出现一样的cookie跨域的问题。
在实际场景中,我们在访问提供服务的应用时检测到未登录就会直接跳转到openid身份服务器,或者没有重定向而是在登录表单附近点击选择使用第三方openid登录,进行账号密码登录(这可以保证我们所登录的服务器无法获取我们的敏感身份认证信息),具体流程如下:

CAS全称为Central Authentication Service即中央认证服务,是一个企业多语言单点登录的解决方案,并努力去成为一个身份验证和授权需求的综合平台。CAS就是一个现成的单点登录的demo,企业只需要简单修改就可使用。
CAS支持各种协议,SAML,OAuth,OpenID,OIDC等等,支持LDAP,Radius,JWTX,509等等进行身份认证和授权,还有各种常用语言的客户端,Java,PHP,C# 等等。反正就是一个十分完整的,兼容性特别好的SSO框架。
简单了解CAS是如何实现单点登录的。在官网上可以看到其给出的一个 流程图 ,。这个图说的特别详细,一下就能看懂,直接原图上进行标注查看:

学习了上面几种单点登录的知识,结合实际场景可知,跨域单点登录才是真正的单点登录,因为实际情况下很多平台或者域名不可能都在一个一级域名下。在解决跨域单点登录的问题的时候,上面也给说了几种方式,但是究其根本,就是利用一个SSO认证中心来实现认证与授权的。当然,也会有其他的解决跨域单点登录的方案,但是大体流程都与cas类似。

比如在上图的11步骤,也可使用POST包,或者JSONP和iframe方法来跨域发送请求进行重定向。
在利用认证中心来实现单点登录是现在比较普遍的解决方案,那么有没有不需要使用认证中心来解决跨域单点登录的方案呢?
利用JSONP同步登录状态,大概流程流程如下:

在学习单点登录的过程中,在其中认证的过程中授权令牌的传递等相关信息没有特别详细的说明,而且在思考单点登录的时候也会有想过一个比较矛盾的问题:单点登录的目标是为了让用户可以在相互信任的系统中一次登录即可,但是如果真的是做到所有用户都可以访问所有系统,岂不是会带来越权的问题,是否需要对不同的用户以不同的授权,甚至限制访问的应用,但是这样是不是就不是原本狭义的单点认证?

在说单点登录的认证和授权之前,先谈一谈我一直想弄清楚的统一身份认证和单点登录的区别。说起单点登录可能很少听过,但是统一身份认证肯定不陌生,不管是企业还是高校都会有这种统一身份认证的系统。
统一身份认证最重要的一方面就是身份认证,另一方面就是和身份认证相关的授权控制,权限控制。而单点登录是多应用一次登录,也可以叫统一登录,可以理解为主要在认证方面。对于统一身份认证来说会有账号管理,如LDAP,认证管理OAuth,SMAL等,因此我觉得,统一身份认证一般是包括狭义的单点登录,狭义的单点登录,即只需要满足多应用一次登录即可。但是现在的单点登录,SSO系统并不仅仅是要求这些,他的范围正在慢慢扩大。

单点登录的认证和授权,前面说到的CAS实现单点登录里就会看到需要ticket来进行认证,授权。CAS支持多种认证方案,比如OAuth,OpenID,SAML等等,我们可以来比较比较用这些协议的区别,或者说是在哪些场景下使用哪些认证方案较为合适。本身单点登录是没有权限控制的功能的,但是因为这些认证协议的需求,自然支持了权限控制。
在使用SAML进行认证的过程中,可以看到下图,其是基本流程都差不多,这里需要注意的就是在用户在认证中心成功登陆之后,重定向的时候返回的是一个SAML token,一个XML节点,这里的token会包括用户的身份信息,用户名等。

在OAuth2.0的标准中流程是和上面的基本相同,但是OAuth2因为客户端并没有一点是浏览器,所以token中默认是没有签名的。这里可能没有体现出来,OAuth2的目标是授权,所以token更关注的是权限,token在向认证服务器验证的时候就会有不同的授权,但是既然是授权,就间接实现了认证。

在传统的认证中都是基于session机制的,具体的session模式上面也说了,根据其特性可知session的一些确定:

https://www.mutuallyhuman.com/blog/choosing-an-sso-strategy-saml-vs-oauth2/
https://yq.aliyun.com/articles/636281
https://juejin.im/post/5d0dbb7e6fb9a07f0420512d

6. 什么是cas单点登录

CAS是一个单点登录框架,开始是由耶鲁大学的一个组织开发,后来归到apereo去管。 同时CAS也是开源,遵循着apache 2.0协议,代码目前是在github上管理。单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。cas单点登录目前国内玉符科技技术实力可以,可以考察,望采纳!

7. java单点登录用过滤器怎么实现

1、在普通站点A,B上配置过滤器,如果访问到A的页面时,先访问本地SESSION看是否登录,如果没有,则访问SSO看是否登录,如果没有则转到公共登录界面
2、公共登录界面登录完以后写SSO的SESSION,并通过地址栏返回给A登录的用户名
3、A写本地SESSION,完成登录过程。

4、当访问B应用时,先访问本地SESSION,未登录,则同样跳转到SSO,SSO取到本地SESSION的用户名,返回给B已登录。B写本地SESSION。完成登录过程。

5、A登出时,先杀本地SESSION,调用SSO的杀全局SESSION方法,SSO清空本地SESSION,同时也清空应用B的SESSION,完成单点登出。

8. java CAS SSO 登陆时 ,CAS 能不能取到登陆时的密码

CAS是单点登录的认证中心,负责验证用户是否存在或已登录并颁发认证证书。原则上设计,在CAS前获得前台用户登录信息经SSL加密后,去后台数据库验证的。CAS只是认证模块核心层,密码可以通过前期操作获得

9. 怎么实现单点登录

实现单点登录,这个玉符科技可以,玉符科技在单点登录技术方面有研究,而且不同场景下的单点登录方式是不一样的,玉符单点登录SSO已经实现产品化,交付迅速,时间短,安全性强,单点登录全部通过token令牌实现,不会拿到用户的密码,安全可靠。望采纳!

阅读全文

与单点登录ssojava相关的资料

热点内容
软通动力程序员节2021 浏览:845
安卓系统如何卸载安装包 浏览:868
短信删除助手文件夹 浏览:688
java办公自动化 浏览:340
php中超链接 浏览:253
linux默认路由设置 浏览:36
linux如何挂载iso 浏览:432
vs程序换文件夹后不能编译 浏览:557
安卓源码编译输入脚本没反应 浏览:47
phpmysql自增 浏览:167
把ppt保存为pdf 浏览:533
汽车密封件加密配件 浏览:887
黑马程序员15天基础班 浏览:560
java调整格式 浏览:521
香港云服务器租用价 浏览:78
linuxsublime3 浏览:560
imac混合硬盘命令 浏览:278
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:239
戴尔塔式服务器怎么打开独立显卡 浏览:808