我最近很仔细的深入了一下CAS,还给他们报了个bug,被接受了.
所以我想我有资格来解释一下CAS的东西吧.
CAS用来标志用户的token是存在它自己的域名下的,不是存在web应用的域名下的.CAS判断用户登录由agent决定,agent验证用户信息有两种处理.
1.如果这个用户是以前没登录过的,也就是说这个web应用的域名下没有一个agent颁发的sessionid(在cookie里)的话,那么它会跳转到CAS server的登录界面(这里由CAS server决定是否显示登录界面,还是直接就跳转回来,也就是不是每次都要求输入密码登录的).
2.CAS的登录界面会有两种处理.如果以前没登录过,也就是在CAS server自己的域名下,没有用户的token的话,就要求登录.如果有token的话,就返回一个ticket(也就是不显示登录界面直接重定向返回了).
然后接第一步里面,agent收到ticket以后就提交给CAS server验证,并取得返回信息(是个xml,cas的协议规定的,也可以用saml之类的,这个地方可以取得除了用户姓名以外的信息,这样就可以做同步了,权限的问题可以这么解决).然后agent就保存此时的session,把sessionid放到该web应用域名下的cookie里.
以上逻辑说明了,标志用户身份的token在CAS server的域名下,每个web应用不保存用户身份.因此跨域是绝对没问题的.只是single sign off就需要CAS server的配合了,要把那个token删掉.
不过如果标志身份的token不存在,而sessionid存在,那还是被认为是登录的,只不过是在等待那个session timeout而已.
如果我的理解有误,希望大家指正.
----------------------------------------------------------------
分析的很透彻!
分享到:
相关推荐
跨域单点登录实现项目代码
单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现...
那就意味着做单点登录咯,至于不知道什么是单点登录的同学,建议去找一下万能的度娘。 刚接到这个需求的时候,老夫心里便不屑的认为:区区登录何足挂齿,但是,开发的过程狠狠的打了我一巴掌(火辣辣的一巴掌)。。...
cross-domain-sso:跨域单点登录案例研究
基于springmvc+maven+webservce+memecached 单点登陆实现,实现完全跨域、单点退出
针对单点登录中的跨域身份认证问题,提出了一种基于可变Cookie的方案解决跨域单点登录,使用随机数字生成票据,并作为传统加密算法的会话密钥对客户端的Cookie进行加密,采用现代加密算法在异域系统之间安全传递票据,...
asp.net 跨域单点登录实现原理: 当用户第一次访问web应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果 通过效验,返回给用户一个认证的凭据;...
ASP.NET跨域单点登录源码 asp.net 跨域单点登录实现原理: 当用户第一次访问web应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录; 根据用户提供的登录信息,认证系统进行身份效验,如果 通过效验,...
详情见http://blog.csdn.net/ghsau/article/details/20545513
跨域访问的单点登录案例
SSO完整版,采用服务端和客户端结合跨域。适合demo,改造可适用企业级。
一种简单跨域单点登录系统的实现,pdf文件,学术论文
asp.net 跨域单点登陆Demo!!!!!!!!!
aspnet+跨域单点登录源码 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码
自己写的一个SSO跨域单点登录Demo,直接使用Eclipse导入即可使用,压缩包中附有自己总结的详细的使用说明和跨域登录原理讲解,感兴趣的朋友可以看一下。
完全跨域的单点登录, 适用于java语言开发, demo中展示了单点登陆的原理, 可用于理论学习
1、该代码,使用maven构建的模块化项目工程,ssm框架,直接import --> existing maven projects 即可 ...4、单点登录教程可以参考 https://blog.csdn.net/weixin_42686388/article/details/81299609
基于Java+EE的跨域单点登录系统的研究与实现 基于Java+EE的跨域单点登录系统的研究与实现