前段时间工作中实现了单点登录(SSO),大致做一下总结吧。
所谓的单点登录,现在在网上很流行。举个例子:
如果要登录360京东买东西,但是没有注册京东的账号,那我就可以使用QQ的账号登录,登录成功之后就可以买东西了。其内部是怎么实现呢?
在京东的登录页面有“使用合作网站账号登录京东:QQ,网易,人人...”,我点击QQ之后就会跳到QQ的登录页面,我用QQ账号登录成功之后,QQ这个网站会给京东发一段加密签名的文本或者是xml文件,也就是断言,告诉360京东这个用户已经经过我QQ的认证了。并把用户的页面跳转到京东的页面,京东得到这段文本之后验证这段文本的签名是否是QQ的,如果确认无误,京东就会认为我是一个有效用户,我就可以再京东上购物了。
这个过程中最重要的就是跨企业或者是跨域系统的认证的问题,如上,QQ必须对自己发出的断言签名,京东也需要对这个签名进行验证,这样才能保证用户是从QQ授权过的用户。
整个过程说白了就是QQ签名,京东认证签名。