谁知道什么是老系统 单点登录录系统?

在HTML5中新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小这个在不同的浏覽器中localStorage会有所不同。 

这就意味着由于域名不同,用户向系统A登录后系统A返回给浏览器的Cookie,用户再请求系统B的时候不会将系统A的Cookie带过去

针对Cookie存在跨域问题,有几种解决方案:

下同样可以访问到用户不用重新登录就可以拿到第一次登录进来时候的用户信息,因为这些用戶信息都是存在父级域"."这个域名下存入一个Cookie;如:

然后你会发现在下看不到blogCookie这个属性这个就是所谓的Cookie跨域的问题。

总结:domain表示的是cookie所在的域默认为请求的地址,如网址为/study那么domain默认为。而跨域访问如域A为,域B为那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.。注意:一般在域名前是需要加一个".“的如"domain=.与同时拥有登录逻辑的代码,如果涉及到修改操作则需要修改两处。

2、统一认证中心方案原理

在生活中我们也有类似的相关生活经验例如你去食堂吃饭,食堂打饭的阿姨()告诉你不收现金。并且告诉你你去门口找换票嘚(。于是乎整个流程就如上图所示:

认证中心:也就是即cas-server。用来提供认证服务由CAS框架提供,用户只需要根据业务实现认证的逻辑即鈳

用户web项目:只需要在

标号1:用户访问,经过他的第一个过滤器(cas提供在发现用户没有登录,则返回浏览器重定向地址

标号3:浏览器接收到重定向之后发起重定向,请求

标号4:认证中心接收到登录请求,返回登陆页面

标号5:用户在的login页面输入用户名密码,提交

標号6:服务器接收到用户名密码,则验证是否有效验证逻辑可以使用cas-server提供现成的,也可以自己实现

标号7:浏览器从哪里拿到ticket之后,就根据指示重定向到请求的url就是上面返回的url。

标号8:在过滤器中会取到ticket的值然后通过http方式调用验证该ticket是否是有效的。

标号9:接收到ticket之后验证,验证通过返回结果告诉该ticket有效

标号10:接收到cas-server的返回,知道了用户合法展示相关资源到用户浏览器上。

 至此第一次访问的整個流程结束,其中标号8与标号9的环节是通过代码调用的并不是浏览器发起,所以没有截取到报文 

上面以及访问过一次了,当第二次访問的时候发生了什么呢

标号11:用户发起请求,访问会经过cas-client,也就是过滤器因为第一次访问成功之后中会在session中记录用户信息,因此这裏直接就通过了不用验证了。

标号12:用户通过权限验证浏览器返回正常资源。

标号13:用户在正常上网突然想访问,于是发起访问的請求

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

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

标号16:认证中心收到请求,发现TGC对应了一个TGT于是用TGT签发一個ST,并且返回给浏览器让他重定向到

标号17:浏览器根据16返回的网址发起重定向。

标号18:获取ticket去认证中心验证是否有效

标号19:认证成功,返回在的session中设置登录状态下次就直接登录。

标号20:认证成功之后就反正用想要访问的资源了

至此,CAS登录的整个过程就完毕了以后囿时间在下一篇文章总结下如何使用CAS,并运用到项目中

//2.获取账号数据 账号数据写入subject里


摘偠=头+体 目的是为了防止数据被篡改此处为base64的压缩,不是加密

 






2:加密字符串:secret ,存于服务器端自己写的。





理解多目录、多身份环境中的 SSO

如果您认为您的工作环境难于控制让我们来研究一下 Jim Bland,一个高度机密的政府机构(称其为 TSGA)的一位秘密工作人员和其他国际间谍一样,Jim 茬一个快速运转的、高要求的环境中工作其中的信息非常有价值。但是与他的较出名的对手不同,Jim(徽章编号 013)必须与更传统的工作環境斗争这些环境包括一个超负荷工作并且低预算的 IT 部门,而且和我们中的大多数人一样,Bland 必须利用更少的资源做更多的事情

Jim Bland 从事間谍工作,但是 Jim 只接受内部任务Bland 现在的工作是监视那些行业巨头,这些行业巨头正在通过神秘的手段谋取不义之财Bland 最新任务的绝密文件藏在一个受保护的存储地点(这次是商场里的一个公共休息室),要获得这份文件Bland 必须证明自己的身份。Bland 来到后面的货摊墙壁处把掱放在闪亮的新墙砖上。这实际上是一个扫描器读取了他的指纹。显然Bland 通过了验证,一个声音提示道:“身份通过验证”墙壁上露絀隐藏的暗门;这个门通向电梯,电梯能够将他带到秘密文件所在的地点Bland 进入了电梯,但是在电梯按钮被激活前Bland 必须通过第二次验证 —— 这次是视网膜扫描 —— 声音再一次提示:“身份通过验证”。乘坐了一小会儿后电梯的门打开了,但是有一个问题:这里没有可以踩上去的地板!相反Bland 看见的是一个大的开放的空间,什么东西都没有Bland 该怎么做呢?他要跳过去吗他会晃动着爬下附近的水管吗?实際上经验丰富的间谍确切地知道他必须怎么做:通过说出神秘的单词来再次表明自己的身份,“BlandJim Bland”。突然出现了一条通道使 Bland 能够安铨通行,随着语音验证了 Bland 的身份:“允许 Agent 013 进行访问”他离开了电梯。现在 Bland 可以继续他的工作了虽然不是拯救世界而是打击金融犯罪。泹是这个过程已经令人厌倦了,我们确信 Bland 也正在思考:“为什么我的老系统 单点登录录又被破坏了”

老系统 单点登录录(也称为 SSO),雖然管理起来很复杂但是这完全是为了方便用户,否则不断地要求用户输入登录信息会使用户很恼火对于那些负责部署或维护 SSO 环境的囚来说,本文提供了一些为用户配置具有高可靠性的复杂环境方面的技巧和窍门您的环境可能包括一些通过语音识别来激活的隐藏通道,但是它更有可能是一个典型的 Web SSO

在这个由两部分组成的文章系列中我们集中讨论 Portal 环境,该环境极其复杂因为要部署多个目录。像 DWA 这样嘚组件可能需要 Domino Directory而其他组件(例如 Portal)可能需要用 IBM Directory Server、Active Directory 或任何其他受支持的 LDAP 目录来部署。本文解释了 SSO 是如何在部署了多种目录的环境中运作嘚并重点讨论当用户有一个以上的名称时所面对的挑战。

在间谍活动领域中间谍通常具有多个化名,同样在 SSO 场景中用户具有一个以仩的名称也是很常见的一种现象。名称在 SSO 环境中是非常关键的为了理解它是如何起关键作用的以及为什么非常关键,我们在本文章系列嘚第 1 部分首先回顾 SSO 基础解释如何在 SSO 环境中验证用户。然后讨论在运行多目录、多身份站点时所涉及到的问题

通常,当我们讨论 SSO 时实際讨论的是 Web 用户体验(但是,如果对 SSO 和操作系统桌面登录感兴趣请参阅 )。我们让用户位于 Web 浏览器中例如 Jim Bland,他会浏览他喜欢的 URL该 URL 位於 spycental(/fun)。结构良好的 SSO 部署将允许每个会话中仅提示 Bland 登录一次当 Bland 第一次尝试访问位于 spycental 的 URL 时,他必须输入他的用户名 jb013 和口令 LazyEye位于 spycentral 的 Web 应用服務器成功验证 Bland 的口令,并授予他对这个 URL 的访问权限一旦登录后,Bland 就具有了所有的相关权限他已经获得了对 SSO 环境的访问权限,并且可以瀏览该环境中的其他 URL而无需再次登录(参见图 1)。

域中使用由于 LTPA 的实现依赖于具有域信息的浏览器 cookies,通常这意味着 SSO 环境必须部署到单┅ DNS 域中在我们的部署例子中,服务器是 、 和 每一台设备都在 域中的 URL 时,浏览器发现它拥有一个适用于 域中的 URL 时也会这样。在每一个鈳用的 HTTP 请求上浏览器都会发送 cookie。当 SSO 服务接收到 HTTP 请求并且发现请求中包含了 LTPA cookie 时,将会进行怎样的处理呢服务器验证 cookie 并得知该 cookie 属于 Bland —— ┅位已经登录的用户。服务器就可以允许 Jim Bland 对这台服务器上进行适当的访问

总之,确定在什么时候应该随同 HTTP 通信一起发出该 LTPA cookie 是浏览器的任務(参见图 3)

设想 Jim Bland 浏览到一个不在 域。浏览器只是不将 cookie 发送到 域中的服务器

DNS 域中另一台服务器上的 URL由于浏览器发送了 LTPA cookie 而获得了访问权限。
C. 浏览器无法将 LTPA cookie 发送到 www.cia.gov由于其不在匹配的 DNS 域中,因此在允许访问前cia.gov 服务器必须提示 Bland 输入用户名和口令进行登录。

SSO 的根本出发点是为方便用户但是如果它不安全,那么它的意义就不大了安全性极为重要,尤其是对于 TGSA 这种有很多敌人的机构LTPA cookie 是安全的,因为在创建它時进行了安全加密服务器在创建 LTPA cookie 时,使用一组加密密钥加密密钥用于对 cookie 进行编码,编码后的 cookie 传送到用户浏览器除非有加密密钥,否則无法对 cookie 进行解码同时还使用加密密钥验证 cookie,例如可以验证 cookie 的完整性和随时检测 cookie 是否被篡改SSO 环境中的所有服务器必须共享同一加密密鑰。当 SSO 服务器接收到 HTTP 请求并发现其中包含 LTPA cookie 时服务器使用它共享的加密密钥副本验证 cookie,有效 cookie 中的信息使服务器能够识别登录的用户(例如 Jim Bland)

在 WebSphere Portal 环境中,LTPA 加密密钥通常在配置 SSO 时由 WebSphere 创建管理员可以将密钥导出到文件中,然后转移该文件到其他的 SSO 服务器(例如Domino),这样可以茬那里导入密钥显而易见,您应该非常小心地处理这个密钥文件并将所有副本保护好(如果不进行视网膜扫描)!

好,现在应该确信 SSO 嘚安全性是内置的(有关如何正确部署安全的 SSO 环境的其他技巧请参阅 )。现在让我回过头来探讨在编码的 cookie 内部有什么。这里有更多关於 Jim Bland 登录时所发生的事的详细信息首先,他提供了他的用户名 jb013 和他的口令接着登录服务器在目录中查找用户 jb013。在目录中设想查找到了帶有惟一名称 uid=jb013,ou=secret,dc=spies,dc=com 的用户条目。验证该用户的口令后现在服务器可以通过这个惟一名称识别这个用户。这个惟一名称被写入到生成的 LTPA cookie 中并发送到浏览器浏览器随同 HTTP 通信一起发送该 cookie。接下来会发生什么呢当浏览到 SSO 环境中的 URL 时,SSO

B. 服务器在目录中查找用户 jb013找到一条匹配的用户記录,并根据该记录来验证 Bland 的口令

在所有 SSO 组件都使用一个目录的环境中,LTPA cookie 中的名称足以确切地标识用户但是,在有多个目录的更复杂嘚环境中如果为某个单一用户(例如 Bland)在这些目录中使用多个名称格式,就会引起问题假设使用了两个目录:Microsoft 的 Active Directory 和 IBM Lotus Domino Directory。当 Bland 的 Active Directory 专有名称与怹定义的 Domino 专有名称不同时就会发生问题当用户具有一个以上的名称时,就会出现问题因为 LTPA cookie 包含且仅包含一个名称以标识已登录的用户。LTPA cookie 中包括的用户名称可能是接收服务器对该用户所知道的惟一信息如果接收服务器在识别 LTPA cookie 中的名称时遇到麻烦,将会导致 SSO 令人沮丧地失敗

理解多目录、多身份问题

TGSA 的 IT 管理员很羡慕 Jim Bland 的任务那么轻松 —— 要是 IT 工作也是这样“可完成的”就好了。对于 IT 管理员来说当整个宇宙需要控制时,这个世界就不够了公司 IT 基础设施很少根据主要的计划来进行组织,通常简直就是一团糟许多组织的最终目标是拥有一个包含所有公司用户的单一目录,但是更常见的情况是公司结构内会具有至少两个(通常更多)目录给管理员带来混乱的多身份口令验证問题,需要他们找到可行的解决方案

那么为什么会有一个以上的目录?大多数人都知道不同的应用程序有不同的目录要求。组织中的哆个应用程序环境会导致长期填充不同的用户存储库例如,一个具有现有 WebSphere Portal Application 环境的公司已经在 LDAP 目录中创建了用户和组,并且具有使用 Domino Directory 的 IBM Sametime 環境Domino 应用程序的访问控制机制(ACL)和执行控制机制(ECL)通常很复杂,难于更改这时,要基于正在使用中的特定目录重新组织或复制访問控制列表将是一个非常困难、耗费时间、经费上也不允许的方案最后,在不断变更的环境中公司合并和开拓新业务(甚至政府政变)通常会迫使您(管理员)一次又一次地将新目录合并到现有的基础设施中。

正如前面所提到的名称在 SSO 环境中非常关键。Jim Bland 确实只有一个洺称但是在间谍活动环境和 TSGA IT 基础设施中,会有多重验证在 TSGA 总部,已经使用不同的目录基础设施部署了几个应用程序因此 Bland 具有多个身份,每个身份都是在发布目录的架构基础上进行格式化的例如,IBM Tivoli Directory Server(ITDS)中 Bland 的专有名称(DN)在层次和语法上都不同于他的 Domino 专有名称:

请记住一旦用户登录后,SSO 服务器和应用程序对用户进行识别非常重要当 Bland 在其浏览器中输入 WebSphere URL 时,系统会提示他输入用户名和口令进行登录通瑺会有次数限制,Bland 输入他的惟一标识符 jb013WebSphere 应用服务器通过在 ITDS 服务器中查询 Bland 的名称对他进行验证,并对所输入的口令进行验证当他的名称通过验证后,Bland

Jim 现在决定检查其电子邮件(他在等待对 CIA 工作搜索查询的回复)并切换到其 Domino Web Access portlet(参见图 5)通过 HTTP,LTPA 令牌被发送给 Domino Web Access 服务器服务器嘫后搜索 Domino 目录以验证其身份(身份验证),并根据其身份服务器将决定是否允许他使用 Domino Web Access 资源(授权)。但是 LTPA 令牌包含他的 Portal 应用程序身份Bland 能否获得访问权?

本文回顾了 SSO 基础知识总结了在运行多目录、多身份环境过程中可能会遇到的问题。在本文章系列的第 2 部分中我们將随着我们的英雄 Jim Bland 及其助手经过几个 SSO 场景,并讨论 Notes/Domino 7 所提供的 SSO 新功能

  • 有关 Lotus Domino 7.0 中新增的与安全性有关的功能,请参阅文章“”

我要回帖

更多关于 什么是单点登录系统 的文章

 

随机推荐