细说SSO单点登录

什么是SSO?

如果你已知道,请略过本节!

SSO核心意义就一句话:一处登录,处处登录;一处注销,处处注销。即:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

很多人容易把SSO与OAuth搞混。这里简单说明一下:

OAuth也可简单总结为一句:基于各种懒和YY的原因,拿别人的登录系统来用。

至于官方说的,是一种授权协议,为网站用户授权第三方应用访问自己在网站…(此处省略N多字)可自行百度。

SSO实现

SSO的实现方式虽然有很多种,但大的框架不会脱离下图结构的:

即所有的登录验证,登录状态存储都在SSO授权中心处理(图中的www.sso.com),其他站点或者使用浏览器跳转(Response.Redirect)或者使用服务器端http post来与SSO授权中心进行通信验证。下面是百度里比较知名的几种实现方式,我会介绍一下他们的优缺点,并提出自己最终的解决方案!

实现方式一:强大的Cookie + Response.Redirect

从感情上来说,这是我最喜欢的一种方式,如果不是我后面提到的几个致命的缺点,我想我这辈子都只会用它了。CodeProject上ASP.NET版块2010 年9月份最佳文章:Single Sign On (SSO) for cross-domain ASP.NET applications 对这种方式给出了完美的说明,并给出了一个可运行的实例!有兴趣的同学可以读一下原文,非常有意思。我这里说一下它的核心思想!

先看看登录:

再看看,如果我想访问一个XX列表页面,流程是这样的:

这种方式看似流程复杂,实际代码实现起来非常简单。domain1.com/domain2.com等站点不用做任何cookie,session等操作,只需要在后台把认证相关的操作全部Redirect给sso.com,然后等着SSO处理完结果Redirect回来即可。具体代码实现可以参考这位大神的第二篇文章:Single Sign On (SSO) for cross-domain ASP.NET applications: Part-II - The implementation

这种方式原理和代码很简单,但缺点也是非常明显的:

  1. 不支持ajax登录验证方式,因为ajax处理后台Redirect相当复杂,这是该方式的致命缺点;
  2. 这能在相同的浏览器里实现单点登录,因为客户端网站没带任何状态信息,只能借用sso.com的cookie判断,不过这个缺点可以用URL带参数,用缓存代替cookie等解决;

实现方式二:HttpClient后台提交

这种方式的典型实现,是以前园子里一个哥们写的smartSSO:http://www.cnblogs.com/smartbooks/p/3800849.html

同上,他的实现核心也可以简化为两幅图。

登录时的情况:

访问一个XX列表页面的情况:

这种实现完全把与sso.com的交互放在了domain1.com/domain2.com后台,通过httpclient post的方式。对于前端普通用户,完全感觉不到sso.com的存在。

从流程图上看,你可能觉得实现起来比第一种方式要简单,但实际情况恰恰相反。因为你不但要在sso.com上做状态存储,还要在domain1.com等客户站点做状态判断并跳转。

该smartSSO只做了类似三方登录的功能,并没有提供客户站点直接登录的接口。

OpenAuth.Net的实现方式

OpenAuth.Net(项目简介及地址:http://www.cnblogs.com/yubaolee/p/OpenAuth.html )v1.2版综合了以上两种方式的优点,实现了更为优雅实用的SSO功能。

特点:

  1. 当使用普通跳转时使用Redirect快速验证;
  2. 当又Ajax时使用后台Post方式;
  3. 如果客户站点不想做登录,SSO占站点自带登录界面,可以完全把登录授权等逻辑交给SSO处理;
  4. 真正的一处登录,处处登录,一处注销,处处注销;

转载自:http://www.cnblogs.com/yubaolee/p/sso.html

时间: 2024-10-25 22:07:24

细说SSO单点登录的相关文章

细说SSO单点登录(转)

什么是SSO? 如果你已知道,请略过本节! SSO核心意义就一句话:一处登录,处处登录:一处注销,处处注销.即:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 很多人容易把SSO与OAuth搞混.这里简单说明一下: OAuth也可简单总结为一句:基于各种懒和YY的原因,拿别人的登录系统来用. 至于官方说的,是一种授权协议,为网站用户授权第三方应用访问自己在网站…(此处省略N多字)可自行百度. SSO实现 SSO的实现方式虽然有很多种,但大的框架不会脱离下图结构的: 即所有

sso单点登录

单点登录SSO的实现原理 单点登录SSO SSO单点登录.跨域重定向.跨域设置Cookie.京东单点登录实例分析

cas sso单点登录系列4_cas-server登录页面自定义修改过程(jsp页面修改)

转:http://blog.csdn.net/ae6623/article/details/8861065 SSO单点登录系列4:cas-server登录页面自定义修改过程,全新DIY. 目标: 下面是正文: 打开cas的默认首页,映入眼帘的是满眼的中文and英文混杂体,作为一名合格的用户,我表示很不开心. 于是,打开 Nodepad++,寻找C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui \casLoginView.jsp这个页

SSO单点登录原理及实现

1.SSO分类 根据实现的域不同,可以把SSO分为同域SSO.同父域SSO.跨域SSO三种类型. 2.SSO实现原理 a.打开统一的登录界面 b.登录,同时向服务器写入Cookie c.进入其他应用 d.判断是否有对应的Cookie 如果没有则进入统一的登录界面 如果有则进入下一步验证 e.服务器验证Cookie的有效性 如果有效则进入下一步 如果无效则打开统一的登录界面 f.成功进入应用页面 3.同域SSO的实现 a.定义一个公共的登录页面 登录页面是通过访问不同路径的action跳转而来.

CAS实现SSO单点登录原理

1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO ). CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA-SIG 的一个项目. 1.2.  主要特性 1.   开源的.多协议的 SSO 解决方案: Protocols : Custom Protoc

学习CAS实现SSO单点登录

网上找了几篇比较详细的教程,在这记录一下: 原理: CAS实现SSO单点登录原理 教程: 1.CAS实现单点登录(SSO)经典完整教程 2.SSO之CAS单点登录实例演示 3.CAS单点登录(SSO)完整教程 有可能出现的问题解决方案: 1.unable to find valid certification path to requested target javax.net.ssl.SSLHandshakeException: sun.security.validator.Validator

NET Core 2.0使用Cookie认证实现SSO单点登录

NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NET Core 2.0出来了试着使用ASP.NET Core尝试一下.假如我们有三个站点 domain.dev order.domain.dev passport.domain.dev domain.dev作为我们的主站肯定是可以匿名访问

SSO单点登录三种情况的实现方式详解

单点登录(SSO——Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统——百度经验.百度知道.百度文库等等,如果我们使用这些系统的时候,每一个系统都需要我们输入用户名和密码登录一次的话,我相信用户体验肯定会直线下降.当然,对于个人博客这类系统来说根本就用不上单点登录了. 假如,我们的系统很庞大,但是就是这一个系统,并没有什么子系统.这时我们也不需要单点登录.我们需要的是搭建集群环境,这里虽说只有一个系

SSO(单点登录)与旅游年卡

SSO(单点登录)与旅游年卡 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方案之一.(来自百度百科) 旅游年卡:一次办卡,多个景点游玩.避免了每个景点排队买票浪费时间影响心情. 我喜欢逛,07年广州一行让我爱上了旅行.十年间转战祖国大江南北.东到浙江苏州上海,南到广东珠海澳门,西到宜昌长江三峡,北到首都长