单一登录是一次认证的能力,并且能够使用已认证的身份在应用程序之间无缝切换。
在Intranet内或在一个开发组织控制下的应用程序之间,可以通过生成一个sessionid并使用cookie传递它来轻松实现Web应用程序的单点登录。 但是,这种解决方案是专有的,如果您需要离开Intranet并访问云上的其他应用程序,则该解决方案将无法使用。 为了与云上的应用程序进行互操作,需要基于标准的解决方案。
一个相关的概念和好处是联盟身份。 组织可以同意一个通用名称来指代用户。 用户及其属性只需要在一个地方创建,其他人可以参考此信息。
在此博客中,我们简要检查了两种可用于在云上进行单点登录的流行协议:SAML和OpenId。
OpenId
OpenId解决的问题是,作为用户,您不必维护和向访问的每个站点提供密码。
您使用一个称为OpenId提供程序的提供程序来维护密码或其他身份验证凭据。
您访问的网站或应用程序需要您的身份证明,因此需要OpenId提供程序来验证您所声称的身份。 这就是所谓的依赖方。
OpenId协议的基础是:
1.您访问Web应用程序(依赖方)并输入OpenId
2.根据您的OpenId,依赖方确定谁是您的OpenId提供者。
3.依赖方将您的请求重定向到OpenId提供程序。
4.如果您已通过身份验证,则将跳过此步骤。
OpenId提供程序通过询问密码或其他信息来对您进行身份验证。 提供者警告您,依赖方正在请求有关您的信息。
5.该请求被重定向回依赖方,在此向您显示您尝试访问的URL。
该协议不要求提供者或依赖方在任何地方进行注册。 它使用简单的HTTP请求和响应。 协议消息是纯文本键值对。 该协议可与现代的“ Web20” AJAX风格的应用程序很好地配合使用。
OpenId协议起源于面向消费者的网站,例如Google,Twitter,Facebook等,并且在该协议中很流行。
在OpenId规范中描述了OpenId规范
openid4java中有一个OpenId的Java实现
SAML(安全性声明标记语言)
SAML是基于XML的协议,可实现基于Web的身份验证,授权和单点登录。
SAML包括一个依赖方请求一个声明,以及一个SAML提供者响应该声明。
断言示例包括:
- 身份验证断言:在时间t使用某某方法验证了该用户。
- 属性声明:此用户具有标题超级管理者。
- 授权声明:该用户有权删除文件xyz.doc。
典型的SAML交互如下:
1.用户尝试访问作为依赖方的URL或Web应用程序
2.依赖方创建一个SAML身份验证请求。
3.依赖方将用户浏览器重定向到SAML提供程序。 该请求中嵌入了SAML身份验证请求。 4. SAML提供程序评估SAML请求并验证用户身份。 5. SAML提供向用户浏览器返回SAML身份验证响应。 6.浏览器将SAML响应转发回依赖方。 7.依赖方验证并解释SAML响应。 8.如果响应表明身份验证成功,则将用户重定向到他最初尝试访问的URL。
SAML具有配置文件的概念。 交互因配置文件而异。 上面的交互是Web SSO配置文件。
SAML的起源更多于企业软件,Web服务,B2B通信中,并且可以追溯到2000年代初期XML非常流行的时候。 实际上,SAML1.x仅具有SOAP绑定。
SAML规范位于SAML规范中
OpenSAML上有一个SAML实现
我应该使用哪种协议?
OpenId是一个更简单的协议。 但具有SAML具有更多功能。
OpenId支持发现OpenId提供程序。 使用SAML通常需要昂贵的SAML项目。
OpenId仅支持服务提供商发起的SSO。 您转到服务提供商的网站,他们需要身份验证。 他们开始与OpenId提供程序进行对话。 SAML还可以支持身份提供商发起的SSO。 您已通过公司门户的身份验证。 贵公司有一个商务旅行合作伙伴旅行网站。 使用SAML,您可以从公司的门户网站(SAML提供程序)转到合作伙伴网站(依赖方),而无需重新认证。
SAML比OpenId更长。 SAML在企业中更受欢迎,而OpenId在面向消费者的应用程序中更受欢迎。
OpenId和SAML都依赖外部传输层安全协议(例如SSL)来保证协议消息的安全。
如果您要启动一个新网站并希望接受来自其他流行网站(例如google或twitter)的用户,则可以考虑使用OpenId。 但是,如果您是一家企业,并且希望通过身份验证的用户无需重新身份验证即可访问您的合作伙伴站点,则可能需要SAML。
总而言之,SAML是一种功能丰富的协议,在企业中更为流行。 OpenId是更简单的协议,但有一些限制。
参考: 云的单一登录: The Khangaonkar Report博客上的JCG合作伙伴 Manoj Khangaonkar的SAML和OpenId 。
相关文章 :
- 使用Spring Security保护GWT应用程序
- 在云中开发和测试
- 使用Spring Security 3.1保护RESTful Web服务,第3部分
- Apache Shiro:简化应用程序安全性
- 使用Spring Security 3.1的RESTful服务进行基本身份验证和摘要身份验证,第6部分
- 2011年:软件安全性和质量状况
翻译自: https://www.javacodegeeks.com/2011/12/single-sign-on-for-cloud-saml-openid.html