由于作为服务软件的越来越多,更多的机构开始倾向于面向服务架构(SOA),这种环境往往是攻击者的主要目标。这种趋势要求特别设计的技术解决安全性问题,接下来我将描述由安全性断言标志语言(SAML)阐释的方法。 SAML是在OASIS指导下开发的标准。OASIS管理一系列广泛的标准,这些标准和XML以及像WS-*和SGML这样的Web服务有关。
SAML这如其首字母缩略词所显示的那样,通过XML或者HTML标识语言强制执行安全性,使其成为广泛安全方案的一部分。 使用SAML的最新领域包括由自由联盟计划开发的单一登录计划,本质上和开发ID项目很相似——例如通过WS-Security在基于SOAP……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
由于作为服务软件的越来越多,更多的机构开始倾向于面向服务架构(SOA),这种环境往往是攻击者的主要目标。这种趋势要求特别设计的技术解决安全性问题,接下来我将描述由安全性断言标志语言(SAML)阐释的方法。
SAML是在OASIS指导下开发的标准。OASIS管理一系列广泛的标准,这些标准和XML以及像WS-*和SGML这样的Web服务有关。SAML这如其首字母缩略词所显示的那样,通过XML或者HTML标识语言强制执行安全性,使其成为广泛安全方案的一部分。
使用SAML的最新领域包括由自由联盟计划开发的单一登录计划,本质上和开发ID项目很相似——例如通过WS-Security在基于SOAP服务中使用的通用领域。理解SAML的关键是要理解其断言机制,该断言机制是语言的基石。列表1-1展示了一个SAML断言。
<saml:Assertion
IssueInstant="2008-10-15T12:00:00Z">
<saml:Issuer Format=urn:oasis:names:SAML:2.0:nameid-format:entity>
http://www.acme.org
</saml:Issuer>
<saml:Subject>
<saml:NameID
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
j.smith@acme.org
</saml:NameID>
</saml:Subject>
<saml:Conditions
NotBefore="2008-10-15T12:00:00Z"
NotOnOrAfter="2008-10-15T12:10:00Z">
</saml:Conditions>
<saml:AuthnStatement
AuthnInstant="2008-10-15T12:00:00Z" SessionIndex="67775277772">
<saml:AuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
</saml:Assertion>
在最后一个列表中,你可以看到,SAML断言包含了很多安全语句,这些语句都和一个主题有关。一个断言的价值可以体现在各个方面,范围从基本要素(例如就某个主题做出断言的人)延伸到更为细致的话题(例如一个断言的时间有效的和日期,甚至还包括令断言更为严格的附加条件)。
SAML当局â(提供断言方)和SAML依赖方(要求断言)之间交换断言。依照交换的性质,第三方或者“被断言方”也会参与进来。第三方满足单一登录方案,在该方案中“被断言方”是一个企图访问资源的终端用户,主管SAML当局和SAML依赖方交换。对于其它SAML交换来说,“被断言方”不过是组成SAML依赖方的应用逻辑。
要想将SAML融入到SOA安全方案,主要取决于其平台中立性。例如早期SAML断言<NameSubject>中的<NameID>要素。在这个实例中,断言是通过电子邮箱做出的,但是这只是其中的一种情况。SAML同样也支持像X.509或者Kerberos这样的身份,这在企业设置中是很常见的,因此这些身份可以在一个特定的平台中屏蔽应用程序。
把这个相同的情况看做是单一注册方法;而不是将程序â“和用户â”锁定到电子邮件地址,基于SAML的架构准许“被断言方”提供凭证,例如数字签名证书(X.509)或者Kerberos,准许安全策略建立在更为广阔的或者已经存在的安全基础设施中。
实际上最主要的安全性问题“这一方真是其所宣称的那样吗?”,是通过SAML来回答的,而不是通过某一个特定平台来回答的,这些平台总有特有的方法断言(例如超时值设定的,失败的条件)。SAML会将这个断言过程标准化。
我们再看一下含有SOAP服务的案例场景,列表1-2展示了一个嵌入在SOAP请求中的SAML代码片段。
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
ID="aaf23196-1773-2113-474a-fe114412ab72"
Version="2.0"
IssueInstant="2008-10-15T20:31:40Z">
<saml:Issuer>http://example.sp.com</saml:Issuer>
<saml:Subject>
<saml:NameID
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">
C=US, O=TECHTARGET-TEST, OU=User, CN=jsmith@acme.org
</saml:NameID>
</saml:Subject>
<saml:Attribute
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:2.5.4.42"
FriendlyName="givenName">
</saml:Attribute>
</samlp:AttributeQuery>
</env:Body>
</env:Envelope>
注意<NameID>值现在指向了X.509值。此外在客户服务器SOAP交换过程中还要执行安全性检查,但是因为断言是建立在SAML基础之上的,这需要松耦合和切换邮箱地址或者kerberos的功能(如果需要的话),这也是SOA最主要的目标。
那么在哪里SAML会融入到Open-ID,自由联盟和Web服务中呢?在每个应用程序栈â“markup â”底部,都会有SAML运行。因此你不可能在这样的项目中看到有明确提到这方面的内容,这些项目都是整体的办法解决安全性问题。但是SAML的颗粒度使其功能变得更为强大,可以处理各种各样涉及云计算的安全隐患。
目前有许多开放源SAML实施,进一步扩展了SAML的用途,远远超出了之前我们所说的那个项目。所以如果你的SOA项目也需要具有松耦合特性的安全检查,考虑一下SAML吧,它和XML一样,可以解决分布式系统安全问题。
作者
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
购买应用集成工具可以采取平衡做法
购买应用程序集成工具需要好好看看你的公司需求,知道从供应商里面要寻找哪些关键功能。