介绍WS Federaion 二:把百度和谷歌和谐起来

 

上文介绍了微软的Passport和传统的SSO在软件架构上的失败,都需要将用户名密码存储到一个地方,那样谁都不愿意,除非一方特别强势,不然谷歌和百度是谁都不愿意妥协的。

那么有什么办法来解决这个用户凭证的存储问题呢?

       先来看看欧洲各大申根国协定。协议规定了单一的签证政策,即凡外籍人士持有任何一个申根会员国核发的有效入境签证,可以多次进出其会员国,而不需另外申请签证。因此,前往欧洲各申根国旅行,只需获得其中一国的签证即可。基于SAML的Federation身份认证类似于申根签证,在Federation联盟的内部,每个成员签发的SAML断言都能够被其他联盟成员所信任,并且能够基于授权模式的保护资源资源访问。

再简单介绍一下SAML,他是Security Assertion Markup Language的缩写,安全断言标记语言。也是WS*规范的组成部分。

他由断言方和信任方以及用户身份主题组成。用户持有断言方的凭据向信任方报到,信任方基于证书签名,验证此用户持有的断言是否正确,而且是由断言方签署的断言。

举例百度空间用户想使用谷歌受保护的Gmail,那么他们之间怎么建立一个信任关系呢?

我用我不擅长的Visio画了序列图,大家不要见笑了。


其中的几个关键步骤:

第五步:用户在百度登录成功后百度颁发一个SAML安全令牌,这个令牌是使用的自己的私钥在摘要上签名的,那么能证明这个SAML就是百度签发的。

第七步:谷歌认证中心在接到百度颁发给用户的安全令牌后,使用百度的公钥解密摘要,并对比摘要是否一致,验证如果一致,那么就能确保这个断言是百度颁发的,并且信任这个断言。

(当然在这个流程设计中,谷歌的认证中心和Gmail可以是一个,而不必跳转浏览器。另外谷歌内部也可以不在内部维护一个安全令牌。)

百度的用户凭证存储在百度上,但是却能够访问谷歌的受保护资源,这样,就能把百度和谷歌的用户和谐了起来!




名词解释:

摘要:

即对数据进行哈希,哈希后字节量明显减少。

签名:

使用自己的私钥给数据加密,那么只要对方能够拿你的公钥解开,那么就证明是你的,因为没有人能获得你的私钥。

posted on 2008-04-23 22:46  Keep Walking  阅读(4166)  评论(13编辑  收藏  举报