[译文]SAML:不仅仅适用于web service(一)

原文:SAML: It’s not just for web service

作者:Frank Teti

出处:http://www.theserverside.com/tt/articles/article.tss?l=SAML-NotJustforWebServices/

 

引言

 

SAMLSecurity Assertion Markup Language,安全断言标记语言)是一个基于XML的标准,用于在安全领域之间交换认证和授权数据。SAMLOASIS安全服务技术委员会(OASIS Security Services Technical Committee)的一个产品。创建SAML以便解决的唯一一个最重要的问题是Web浏览器的单点登录(Single Sign-On)问题,不过,就这一目的来说,SAML存在着一些局限性,事实上,通过把SAML作为WS-Security令牌(token)来使用,其更有效地解决了SOAP Web service的身份验证和授权这一问题。在一些有用的技术上会发现其有价值的方面并会找到一些满足广阔技术前景的事先未料到的方法,例如,Kerberos原来是命运多舛的DCEDistributed Computing Environment,分布式计算环境)的组成部分,不过显然DCE已被废弃有很长一段时间,Kerberos则已经成为了Microsoft的核心安全组件。

SAML 2确实是包括了一些功能,这些功能解决了一些在使用Web浏览器时出现的多站点验证问题。目前,许多组织就是否照旧使用1.1版本还是迁移到2.0版本而正处在SAML的“犹豫不决地带”中。

最近在为一个涉及使用SAML作为SSO以保障门户应用和相关Web应用安全的项目做准备时,在与客户接洽之前,我做了通常会做的事情——向我个人的专家名单中的专家发送电子邮件并进行了基于SAML的搜索,之后有一件事情立刻变得显而易见,即关于这一主题缺乏实质性的文档。

 

调查结果、结论和建议

 

有多人曾推荐Vikrant Sawanthttp://www.oracle.com/technology/pub/articles/dev2arch/2006/12/sso-with-saml.html上的这篇文章“在WebLogic Server 9.2中使用SAML配置单点登录(Configuring Single Sign-On using SAML in WebLogic Server 9.2)”,尽管这篇文章是有些过时,但其就这一有些晦涩难懂的技术领域来说仍然是开创性的贡献,我第一次读到它是在一年半之前,当时我正在实施一个在SOA环境内部使用SAML实现SSO的项目。

虽然可把本文当作是SAML的“hello world”实例介绍,不过基于以下原因,它并没有提供用于现实世界实现的指导:

Ÿ   Oracle WebLogic实例被当作IdPIdentity Provider,身份提供者)使用,而不是作为更加企业级的访问管理应用。

Ÿ   本地的LDAP实例既可用于IdP,也适用于相对于“虚拟用户”的服务提供者(Service ProviderSP)。

Ÿ   由此产生的SAML断言并不包括“Groups”属性,其需要提供RBACRole-based Access Control,基于角色的访问控制);

Ÿ   问题检测不仅仅只包括源和目标服务器的日志分析,以及启用应用服务器调试和SQML信息过滤。

Ÿ   可信合作伙伴的密钥和证书配置不仅只是需要配置一个私钥。

Ÿ   在独立的环境而不是在有集群意识的、生产类的环境中配置安全模型。

 

本文的目的是提供一个视角以便深入了解,如何架构和实现作为企业范围内的平台的SAML安全。

 

一个企业级的IdP

 

使用Oracle WebLogic作为IdP显然是可行的,但是它不具备诸如Sun Access ManagerTivoli Access ManagerOracle Access Manager等一类的真实的访问管理环境所需的功能。使用Oracle WebLogic Server作为IdP并不提供会话管理功能,该功能类似于比如Sun Access Manager所提供的。由众多厂商支持的SAML则提供了一个超越了内联网SSO的解决方案。图1描述了一个供参考的系统结构,使用了

Ÿ   Sun Access Manager 7.1作为IdP,以及;

Ÿ   WebLogic Server 10.3作为SP

 

 


[译文]SAML:不仅仅适用于web service(一)
 

1:概念性的SAML架构——其中包括LDAP储存库

 

虽然许多IdP厂商既支持格式也支持协议,然而由于各厂商的实现不同,并且在实现中包括了他们自己的内部构造,因此配置SAML某些程度上变成了一种映射练习。因为Oracle收购了Sun,所以Sun Access Manager是否退役以有利于Oracle Access Manager,这还有待观察,Oracle Access Manager本身也是Oracle收购得来的,其之前被称为Oblix。虽然一些SAML感知的技术保证说,在Sun Access Manager内部用SAML实现IdP就类似于在WebLogic内部用SAML实现IdP,但可以这么说,配置并不像我所预期的那样对称。

 


[译文]SAML:不仅仅适用于web service(一)
 

2:用于SAML的可信合作伙伴配置的Sun Access Manager 7.1控制台视图

 

Sun Access Manager Source ID属于不透明的数据类型SHA1,使用Base64编码的字符串“protocol://hostname:port(协议://主机名:端口)”来表示,这是SP站点的地址,尽管SP并不需要知晓这一ID。更具体一点来说,可信合作伙伴配置窗口捕捉了以下信息:

 

屏幕文字/参数

IDSource ID

编码,唯一的可信合作伙伴的ID

目标(Target

SP所在的主机名和端口

投递URLPost URL

断言消费者ServletAssertion Consumer Servlet),用作SPWebLogic ITSInter-site Transfer Service,站点间传输服务)的组成部分,其还可以通过SSL来访问。

站点属性映射器(Site Attribute Mapper

IdP内部使用,格式化SP SAML断言命名空间的XML元素

名称标识映射器(Name Identity Mapper

IdP内部使用,格式化SP SAML断言名称标识符的XML元素

版本(Version

SAML 1.1

 

IdPSP用户储存库

 

SAML身份验证模型中,IdP需要一个本地的储存库作为已验证身份的用户的“记录系统”,通常情况下,用户会被放置在本地的LDAP储存库中,相应地,在调用SP中的受保护资源时,SP可以使用同一个本地LDAP储存库来验证用户。然而,虽然这种模式可能适合于内联网应用,但对于跨网站、互联网应用和事实上并没有采用SAML SSO断言模型等情况来说这种做法都是不可行的。

另一种选择是,SP可以被配置成使用“虚拟用户”。图3展示了在WebLogic控制台中创建断言方(asserting party)以支持虚拟用户的窗口,这一可选的SP配置选项允许SAML身份断言器(SAML Identity Asserter)基于传入的断言实例化用户和组主体(Principal)。该配置还要求为安全领域配置一个SAML身份验证提供程序,这一配置使得用户能够登录为虚拟用户——该用户不对应于任何本地已知的用户。

 

 


[译文]SAML:不仅仅适用于web service(一)
 

3:用于创建断言方的WebLogic Server 10.3控制台视图

 

具体来说,创建断言方窗口捕捉了以下信息:

 

屏幕文字/参数

发出者URIIssuer URI

SAML断言发出者的URI

签名要求(Signature Require

如果证书已签名,这一可选属性可设置为true

处理组信息(Process Groups

解析并存储SAML断言的组属性到SPJAAS对象中

允许虚拟用户(Allow Virtual Users

信任传入的所有认证和授权(组)信息断言的身份

 

 

[译文]SAML:不仅仅适用于web service(一)

 

你可能感兴趣的:(oracle,Web,weblogic,SSO,企业应用)