现在的位置: 首页 > 综合 > 正文

Web 服务和无线应用程序安全性(SAML)

2012年09月28日 ⁄ 综合 ⁄ 共 4397字 ⁄ 字号 评论关闭
Web 服务和无线应用程序安全
  Web 服务将在移动商务和无线安全性的发展中起着重要作用。通过使用 XML 消息传递对主要安全性解决方案(如 Kerberos 认证和授权、数字证书、数字签名和公/私钥加密)进行标准化和集成,Web 服务可以用来提供无线安全性解决方案。XML 消息传递被认为是无线通信协议的首选,有多种安全性协议用于基于它的无线应用程序。其中包括以下协议:
  一、安全性断言标记语言(Security Assertion Markup Language,SAML)是用来以 XML 消息传输认证和授权信息的协议。它可以用来提供单点登录 Web 服务。
  二、XML 数字签名定义了如何对 XML 文档的一部分或全部内容进行数字签名,以保证数据完整性。可以用 XML 密钥管理规范(XML Key Management Specification,XKMS)格式封装使用 XML 数字签名分发的公钥。
  三、XML 加密允许应用程序引用预先约定的对称密钥来加密 XML 文档的部分或全部内容。
  四、Web 服务安全 XML 协议簇(WS-Security)是由 IBM 和 Microsoft 认可的向 Web 服务提供安全性的完整的解决方案。它基于 XML 数字签名、XML 加密和类似于 SAML 的认证和授权方案。
  以上所有安全性协议都可以绑定到 Web 服务消息传递协议。例如,我们可以将 SAML 段嵌入到 SOAP 消息头以对所请求的服务的访问进行认证和授权。我们还可以将 XML Digital Signature 段嵌入到 SOAP 头以认证该消息中的信用卡号。
  
  现在,我们要讨论将位置信息与 SAML 安全性规范合并到一起的好处,并研究它是如何增强无线应用程序安全性的。尤其我们要讨论基于位置的认证是如何加入单点登录体系结构的。
  
  与 SAML 合作的位置信息
  SAML 是对供应商中立的 XML 框架,用于在因特网上交换安全性信息。SAML 使全异的安全性服务系统能够通过交换与安全性相关的信息(称为“断言”)来进行互操作。用户的认证、授权、概要和首选项,都是从用户在会话期间选择的原始源服务供应商传送到后续的目的地服务供应商的。SAML 被设计用来与 HTTP、简单邮件传送协议(Simple Mail Transfer Protocol)、文件传送协议和几种 XML 框架(包括简单对象访问协议(Simple Object Access Protocol,SOAP)和电子商务 XML)一起工作。它提供了以 XML 文档定义用户认证、授权和属性信息的标准方式。SAML 的主要组件包括:
  1.断言。SAML 定义了三种断言类型,都是关于用户(人或计算机)的一个或多个事实的声明。认证断言要求用户证实自己的身份。属性断言包含关于用户的特定细节,如他的信用额度。授权判定断言标识了用户可以做什么(例如,是否授权该用户购买某种产品)。
  2.请求/响应协议。这个协议定义了 SAML 请求和接收断言的方式。例如,SAML 目前支持 HTTP 上的 SOAP。将来,SAML 请求和响应格式将绑定到其它通信和传输协议。
  3.绑定。这个组件确切地详细描述了 SAML 请求应如何映射到诸如 HTTP 上的 SOAP 消息交换之类的传输协议。
  4.概要。这些组件规定了如何将 SAML 断言嵌入通信系统或在通信系统之间传递。  尽管 SAML 进行关于凭证的断言,但实际上它并不对用户进行认证或授权。那是由认证服务器和轻量级目录访问协议(Lightweight Directory Access Protocol)目录一起完成的。SAML 创建到实际认证的链接并根据该事件的结果进行其断言。简单来说,SAML 支持基于 Web 的开放和可互操作的设计、单点登录服务功能。基于 SAML 的应用程序的体系结构如下所示。
  

  
图 2. SAML 体系结构

  
  在典型的 SAML 体系结构中,称为信任方的符合 SAML 的服务将 SAML 请求发送到发行认证机构,该机构返回 SAML 断言响应。所有请求和响应都是通过 HTTP 用 SOAP 封装传送的,但应用程序可以用各种请求/响应协议定义和交换断言。但是,这些扩展会限制互操作性。例如,当移动设备客户机请求访问后端应用程序时,它向发行认证机构发送认证信息。然后,发行认证机构可以根据移动设备客户机提供的凭证发送肯定或否定认证断言。尽管用户仍然拥有与无线应用程序的会话,但是发行认证机构可以使用更早的引用来发送认证断言,声明用户实际上是在特定时间内使用特殊的方法认证的。正如先前提到的,基于位置的认证可以定期进行,这意味着只要对用户凭证的认证是肯定的,发行认证机构就会定期发表基于位置的断言。研究下面的 SAML 认证请求。它包含用户凭证(如用户名和加密密码)、认证方法、响应请求、凭证类型和位置信息。
  
  <samlp:Request MajorVersion="1" MinorVersion="0"
   RequestID="<request id>">
   <samlp:RespondWith>AuthenticationStatement </samlp:RespondWith>
  <samlp:AuthenticationQuery>
   <saml:Subject>
    <saml:NameIdentifier Name="<user name>"/>
    <saml:SubjectConfirmation>
     <saml:ConfirmationMethod>
      http://www.oasis-open.org/committies/security/docs/
      draft-sstc-core-5/password
     </saml:ConfirmationMethod>
     <saml:SubjectConfirmationData>
      <password>
     </saml:SubjectConfirmationData>
    </saml:SubjectConfirmation>
    <saml:NameIdentifier Name="<location>" />
    <saml:SubjectConfirmation>
     <saml:ConfirmationMethod>
      <LocationURI> <-- For authenticating location information using
       a SAML binding profile -->
     </saml:ConfirmationMethod>
     <saml:SubjectConfirmationData>
      <latitude>, <;longitude>,<timestamp>,
     </saml:SubjectConfirmationData>
    </saml:SubjectConfirmation>
   </saml:Subject>
  </samlp:AuthenticationQuery>
  </samlp:Request>
  
  对上述请求的响应(如下所示)包含带有指定认证有效的时间段的属性/条件的认证断言。如果请求中提供的认证信息导致成功的认证,那么就向认证请求方返回一个表示成功的状态码。
  
  <samlp:Response InResponseTo="<request id>"
   MajorVersion="1" MinorVersion="0"
   ResponseID="upuSGdmqx7ov01mExYlt+6bDCWE=">
   <samlp:Status>
  <samlp:StatusCode Value="samlp:Success"/>
   </samlp:Status>
   <saml:Assertion AssertionID="+1UyxJDBUza+ao+LqMrE98wmhAI="
  IssueInstant="2002-10-03T14:33:58.456" Issuer="SunONE"
  MajorVersion="1" MinorVersion="0">
  <saml:Conditions NotBefore="2002-10-03T14:33:58.466"
   NotOnOrAfter="2002-10-03T15:03:58.466"/>
   <saml:AuthenticationStatement
    AuthenticationInstant="2002-10-03T14:33:55.201"
    AuthenticationMethod="http://www.oasis-open.org/committies/security/
     docs/draft-sstc-core-25/password">
     <saml:Subject>
      <saml:NameIdentifier Name="<user>" />
      <saml:SubjectConfirmation>
       <saml:ConfirmationMethod>
        http://www.oasis-open.org/committies/security/docs/
         draft-sstc-core-25/password
       </saml:ConfirmationMethod>
      </saml:SubjectConfirmation>
     </saml:Subject>
    </saml:AuthenticationStatement>
   <saml:AuthenticationStatement
    AuthenticationInstant="2002-10-03T14:33:55.205"
    AuthenticationMethod="<LocationURI>" >
     <saml:Subject>
      <saml:NameIdentifier Name="<location>" />
      <saml:SubjectConfirmation>
       <saml:ConfirmationMethod>
        <LocationURI>
       </saml:ConfirmationMethod>
      </saml:SubjectConfirmation>
     </saml:Subject>
    </saml:AuthenticationStatement>
   </saml:Assertion>
  </samlp:Response>

抱歉!评论已关闭.