百度百科定义:单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。支持产品:WebSphere通过Cookie记录认证信息,WebLogic则是通过Session共享认证信息,用Cookie方式可实现SSO,但域名必须相同。Session是一种服务器端机制,当客户端访问服务器时,服务器为客户端创建一个惟一的SessionID,以使在整个交互过程中始终保持状态,而交互的信息则可由应用自行指定,因此用Session方式实现SSO,不能在多个浏览器之间实现单点登录,但却可以跨域。(qq应该使用的是session控制单点登陆)。
1. 统一用户管理。实现用户信息的集中管理,并提供标准接口。
2. 统一认证。
用户认证是集中统一的,支持PKI、用户名/密码、B/S和C/S等多种身份认证方式。
用户认证中心提供了统一认证的功能,那么用户认证中心如何提供统一授权的功能呢?这就是授权管理中,其中应用最多的就是PMI。
PMI(Privilege Management Infrastructure,授权管理基础设施)的目标是向用户和应用程序提供授权管理服务,提供用户身份到应用授权的映射功能,提供与实际应用处理模式相对应的、与具体应用系统开发和管理无关的授权和
访问控制机制,简化具体应用系统的开发与维护。PMI是属性证书(Attribute Certificate)、属性权威(Attribute Authority)、属性证书库等部件的集合体,用来实现权限和证书的产生、管理、
存储、分发和撤销等功能。
PMI以资源管理为核心,对资源的访问控制权统一交由授权机构统一处理,即由资源的
所有者来进行访问控制。同
公钥基础设施PKI相比,两者主要区别在于: PKI证明用户是谁,而PMI证明这个用户有什么权限,能干什么,而且PMI可以利用PKI为其提供
身份认证。
qq相关知识:
qq登陆后在浏览器中腾讯网点击一键登录
request:GET /jump?clientuin=540343937&clientkey=000151e7861d006813cb4109d542c281fa5bba0d341eee2b9bd14176452ff27dc289b1314a10fac9e5ab64f383357d4c5695984be5eba2ed70c14e864f7c484b200f3e3932e6b08c0d7240541e653131e4c04b7caf24664c8ad367b02cf31dc1ba7eb31f11d7dff3edae810aef2c8cf5&keyindex=9&pt_aid=636014201&u1=http%3A%2F%2Fwww.qq.com%2Fqq2012%2FloginSuccess.htm HTTP/1.1
包含一个
clientkey应该就是qq的单点登陆验证key(类似sessionId)
Referer: http://xui.ptlogin2.qq.com/cgi-bin/qlogin?domain=qq.com&lang=2052&qtarget=0&jumpname=&appid=636014201¶m=u1%253Dhttp%25253A%25252F%25252Fwww.qq.com%25252Fqq2012%25252FloginSuccess.htm&mibao_css=&s_url=http%253A%252F%252Fwww.qq.com%252Fqq2012%252FloginSuccess.htm&low_login=0&style=11&authParamUrl=&needVip=1&ptui_version=10034
之后会访问一个登陆成功页面:
GET /qq2012/loginSuccess.htm HTTP/1.1
如果在浏览器点击退出登陆会有如下请求:
GET /collect?sIp=&iQQ=540343937&sBiz=qq.com&sOp=logquit&iSta=&iTy=1445&iFlow=&sUrl=javascript%3Avoid%280%29%3B&sLocalUrl=http%3A//www.qq.com/&ext1=F5875214208&ext2=&0.12076449506979508 HTTP/1.1
有这个参数sOp=logquit,再次点击一键登陆会重新请求,clientkey值没有变
注:ptlogin2.qq.com 是腾讯单点登录的验证server
(使用Fidder2抓包)