Openid与SSO 博客分类: IT / Architecture openidsso
程序员文章站
2024-03-17 08:22:52
...
Openid与SSO
1,什么是Openid
openid是一种用于以用户为中心的数字身份的分散的开放式免费框架。
2,Openid的简介
EndUser:使用OpenId标识符作为网络通行证的用户。
OpenId依赖方(RP):一种在线资源,使用OpenId识别可以访问它的对象。
OpenId提供者(OP):一个站点,用户可在该站点声明OpenId,随后登录并为任意RP验证身份。
RP 通常由用户提供的标识符呈现,该标识符被规范化为声明的标识符。用户的浏览器将被重定向到 OP,这样用户便可以提供其密码并得到身份验证。RP 不知道也不关心声明的标识符是如何获得验证的;它只想知道 OP 是否成功地验证了用户身份。如果验证成功,用户代理会被转发到用户正试图访问的安全资源中。如果用户得不到验证,RP 会拒绝任何访问。
OP负责发出标识符并执行用户身份验证。OP 收集并保留每个用户的一些基本信息。当要求 OP 验证声明的标识符时,用户的浏览器直接转到登录页面,用户在该页面输入其密码,此时的控制权在于 OP,如果用户成功得到身份验证,OP 会将浏览器转到 RP 指定的位置(在一个特殊的 “return-to” URL 中)。如果用户不能进行身份验证,他可能会收到来自 OP 的消息,指出身份验证失败 。
3,Openid与SSO对比
(1)使用范围
SSO(Single Sign-on)单点登录使用在一个企业/公司的范围内,实现各个系统的认证整合是可行的,但是实现全网的认证整合则不可行。
OpenID 不是一个具体的实现或者产品,而是一个规范,是一个被认可的统一的规范,参见:openid.net 。该规范建立的目的,就是实现全网的认证信息共享。任何公司和组织,都可以根据规范,开发自己的 OpenID provider,将自己的认证用户数据库提供全网“共享”。•
OpenID 相比 SSO,是松耦合的认证整合,不会限制于某个认证平台,是更加开放的系统。
(2)实现
SSO 的实现可能依赖于 Cookie,涉及到 Cookie 名称校验、发放和匹配等,需要对 Web 应用的认证进行改造,开发量大,SSO 服务器需要对 Web 应用开放特定端口/API,以便 Web 应用能够从服务器获取登录状态信息,影响登录服务器的安全性。
OpenID 和认证中心是松耦合,应用无须实现和某个认证中心绑定。登录时用户手工输入在任意一个认证中心的 OpenID URL,OpenID 使用标准的 HTTPS 协议,并且不依赖于 Cookie。让全网不同架构的Web应用服务器和 OpenID 的整合提供可能,OpenID 提供了几乎各种语言的API,便于应用在登录中增加 OpenID 登录功能。