继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

《SSO CAS单点系列专题》之 分析!OpenID能成功逆袭吗?

手插口袋_
关注TA
已关注
手记 25
粉丝 455
获赞 3117

作者: 常明,Java架构师
[请尊重原创,盗版必究,转载请指明出处]


sso
CAS已介绍很长时间了,今天讲讲另一个SSO协议,OpenID。OpenID协议最初由Brad Fitzpatrick于2005年开发,Brad Fitzpatrick这货可算是个奇才,大名鼎鼎的memcached最初也是由他用Perl语言开发的。

OpenID需要解决一个什么问题?OpenID要解决的是分布式环境下用户的身份认证问题。大约十年前,也就是Web2.0开始发迹时,用户的互联网应用越来越多,新网站层出不穷,而每个应用都需要用户注册登录,特别是很流行的邮箱作为账号验证注册登录,用户一般都有几套账户密码。

能不能有种方式只提供一套用户的网络账户凭证,用户在各个网站登录只用这套登录凭证?这样岂不简化用户注册流程,克服维护几套账户密码的繁琐?

这是不是和我们前面讨论的CAS要解决的需求有点儿类似?它们应该都属于SSO范畴。只不过CAS是在相对封闭环境中,解决用户的单点登录问题,OpenID则是在开放环境中,解决用户登录问题。

这个想法非常好,OpenID给用户提供一个统一网络身份,遵守OpenID协议的应用网站(在OpenId术语里叫Relying Parties or RP)需要用户登录时,引导用户到第三方OpenID身份提供方(OpenId术语里叫OpenID identity provider or OP)去认证,认证通过即登录成功。这样就省去了每个应用网站注册、登录的烦恼。

在当时,OpenID还是受到很多大公司诸如Yahoo、Microsoft、google、facebook等的热捧,但真正面临落地却发现并没有那么简单,这套协议推出OpenId 1.0,2.0几个版本后,并没有真正发酵流行起来。

和咱们前面讨论的CAS对比下,CAS解决的是企业应用群范围下,避免用户每个应用注册登录问题,而OpenID的问题域变大了,面对的是整个互联网。

问题域变大了,需求是否还一致呢?首先,从用户方考虑,真的需要这么一个唯一网络凭证么?可能需要,也可能不需要。用户可能担心自己的隐私泄露,在不同站点用不同账号更安全些。在互联网整个开放环境里,和在企业提供的应用群环境里,安全范围不同导致用户安全防护级别也不同。用户宁愿麻烦一些,也不愿冒自己大范围隐私泄露于整个互联网风险。也就是说,用户是不相信这个互联网范围级的认证中心OP,而且这个OP也没有能力保证用户整网登录安全。

其次,OP和RP的关系是松散的组织关系,利益趋向可能不并相同。对于关键的用户基础服务,哪个网站(即RP)也不愿意完全依赖于第三方,万一这个第三方发生故障停止服务呢?而且一些关键性的用户数据如邮箱或手机号,为了提供特定服务,每个网站都需要收集。所以很多网站都有自己的注册登录服务,第三方登录最多只是一个辅助功能来提供。就算利用OP登录了,通常也还需要和自身网站账号进行一个绑定,这样看来,用户操作体验并没有带来多大便利。这和CAS应用环境是不同的。

也就是说,在互联网整个环境下,只提供统一登录服务对用户、RP方没多大诱惑力,OP方心有余而力不足。这也许就是OpenID始终没有火起来的原因。

与此同时,另一个密切相关的协议异军突起,这就是OAuth。OAuth很务实,它解决了一个什么问题呢?OAuth其实是一个授权协议,它解决的是应用可以访问用户在另一应用上的某些授权资源,但此应用不需要知道用户在另一应用上的账户密码。

OAuth在开放互联网环境下很有意义,大公司应用很愿意提供,小公司应用也愿意使用。这不单单是个登录问题,小公司应用可以很方便地调用大公司提供的某些功能,访问用户的授权资源,从而丰富自己的应用,为用户提供更好的用户体验。大公司应用通过开放精神能够吸引更多的用户,同时借助小公司应用更好地宣传推广自己,是个双赢局面。

授权是在认证之后,大公司应用提供OAuth授权的同时,其实也是相当于提供了认证服务。因此,流行的第三方登录,如新浪、QQ账户登录,其实是由OAuth提供的。而高大上的OpenID,反而并没有接受。

OpenID组织(http://openid.net/)也许认识到了这一点,在开放互联网环境下,单纯解决单点登录问题,也许本身就是个伪问题(有的公司在内部使用OpenId作为SSO)。如果定位在互联网环境下,大型应用为其合作伙伴应用提供认证+授权服务,可能更现实些。2014年2月,OpenID组织推出了最新一版,叫OpenId Connect。

OpenID Connect其实是OpenId + OAuth 2的结合体,它解决的问题和它的初衷已有很大的不同。它的推出是否为市场所接受,能成为主流吗,还是由于OAuth2已大面积使用而为时已晚,让我们拭目以待吧。
q
qq


本文原创发表于慕课网,转载请注明原作者与本文链接,侵权必究,谢谢合作!

打开App,阅读手记
11人推荐
发表评论
随时随地看视频慕课网APP

热门评论

一整套真心可以,收藏带走,tks!

写得真棒!差距在此,望尘莫及!

查看全部评论