如何让SAML适应你的SOA安全方案

日期: 2010-05-27 作者:Daniel Rubio翻译:杨君 来源:TechTarget中国 英文

由于作为服务软件的越来越多,更多的机构开始倾向于面向服务架构(SOA),这种环境往往是攻击者的主要目标。这种趋势要求特别设计的技术解决安全性问题,接下来我将描述由安全性断言标志语言(SAML)阐释的方法。   SAML是在OASIS指导下开发的标准。OASIS管理一系列广泛的标准,这些标准和XML以及像WS-*和SGML这样的Web服务有关。

SAML这如其首字母缩略词所显示的那样,通过XML或者HTML标识语言强制执行安全性,使其成为广泛安全方案的一部分。   使用SAML的最新领域包括由自由联盟计划开发的单一登录计划,本质上和开发ID项目很相似——例如通过WS-Security在基于SOAP……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 购买应用集成工具可以采取平衡做法

    购买应用程序集成工具需要好好看看你的公司需求,知道从供应商里面要寻找哪些关键功能。