第5章 Web服务安全认证和访问控制机制
身份认证和访问控制是Web服务中非常重要的安全功能,本章介绍Web服务的身份认证和访问控制机制。
身份认证和访问控制功能通常需要一个基础的PKI来支持,但是在Web服务中并不提供一种新的PKI技术。而是利用现有的PKI技术,通过XML的方式对它们进行综合集成。这就是XKMS标准的目的和作用,它解决了Web服务环境下使用PKI技术的问题。
Web服务是实现基于SOA体系的分布式开放系统的很好工具,在这些分布式开放系统中,各参与主体之间需要交换多种安全信息,如身份验证、授权及属性信息等。为了更好地实现互操作,需要对这些信息进行标准化,SAML(Secure Assertion Markup Language)标准就是为了解决这个问题而设计的。同时它还提供了扩展功能,用户可以根据自己的需要扩展实体间需要交互的安全信息。
采用Web服务技术实现的分布式开放系统,其中的参与者非常多,有很多服务提供者和服务请求者。有的既是服务提供者,也是服务请求者。服务请求者在请求服务时,需要一种身份认证的机制,以便为访问控制提供最基础的依据。而由于服务提供者可能是多个,一个服务请求者为了完成一件任务,就需要多种不同的身份。如何对这些身份进行有效的管理,提高效率,一个基本的思想就是采用单点登录(Single Sign-On,SSO)方式,即服务请求者只需要在一个服务提供者处登录,就可以实现所有服务的访问。实现SSO有两个基本的思路,一是提供一种中心的服务器,它提供统一的身份管理,如Microsoft的.NET Passport;二是采用分布式的方式,多个主体通过联盟方式实现身份的相互认可,如自由联盟工程(Liberty Alliance Project,LAP)等。
在Web服务的访问控制框架中,并不采用一种集中的方式,而是一种分布式的方式,即对于策略的生成和维护、决策判决以及策略的执行可能在不同的实体上进行,这也和Web服务的思想是一致的。
Web服务中的访问控制需要一种策略语言,而且由于Web访问控制框架是一种分布式的方式,多个实体之间需要进行策略的交互。因此需要一种通用的访问控制策略语言,基于XML的XACML(eXtensible Access Control Markup Language)可以用来解决这个问题。
本章最后给出了在Web服务访问方面的一些实践,帮助读者更深入理解Web服务访问的思想和实现机制。
5.1 基础支撑系统——XKMS
5.1.1 PKI和XKMS的关系
各主体进行信息共享和协作时,为了保护信息的机密性和完整性,可以使用公钥(Public Key)技术,如使用对方的公开密钥来加密传输密钥的方法可以用于保护数据的机密性;使用自己的私钥对传送的数据进行签名可以保护数据的完整性。因此实体在通信前需要获取对方的公开密钥,在小范围内实体之间可以通过交换媒介等方式实现公开密钥的交换。而Web服务要实现跨域的大范围的信息共享和协作,在分布式系统中公开密钥的分发也就成了一个很复杂和困难的问题,PKI就是为了解决这个问题而提出的。
PKI的最初思想由Whitield Diffie提出,所有实体的公开密钥都存放在一个目录下,正如电话号码本一样。这种方法思想非常简单且容易实现,但是在Internet范围内,这样的方式就显得很难实现。后来Lauren Kohnfelder提出了证书的概念,即公开密钥的管理者为每一个实体颁发一个证书,实现实体和其公开密钥的绑定。证书可以独立地分发,同时公钥技术可以实现对证书及其持有者的验证。以后的PKI大都是围绕这一思想来实现的,不同的是可能针对的情况不一样。
现有的主要PKI技术如下。
(1)X.509
X.509 PKI开始是为了解决OSI(Open Systems Interconnect)族的证书格式和交互协议而提出的。尽管OSI协议本身有很多局限性,限制了其成功推广和使用,但是X.509 PKI技术却得到了很好的发展和应用。在X.509 PKI技术中,所有实体都由证书中心(Certification Authority, CA)颁发一个证书,通过证书实现实体名字和公钥的绑定,在后来的版本中还实现了属性证书。
(2)PKIX
PKIX(Public Key Infrastructure X.509)的提出是为了在一些安全协议中使用X.509证书规范,协议主要有SSL、S/MIME和IPSEC等。PKIX的信任模型和X.509 PKI一样,都是通过证书中心颁发证书,实现实体名字和公钥的绑定。
(3)PGP
PGP(Pretty Good Privacy)是一种完全不同于X.509系列的PKI技术,它没有证书中心,任何实体都可以为其他实体颁发证书。PGP证书也是为了实现名字和公钥的绑定,一个实体A通过给另一个实体B颁发证书C,表示对实体B的名字和公钥绑定的信任。如果一个实体D需要得到实体B的公钥,而且D信任A作为介绍人(introducer),那么通过证书C,D即可得到B的公钥。由于PGP的信任模型中没有权威中心,因此所有的实体根据自己的情况选择信任的其他实体,所有的信任关系就组成了一个信任网络(Web of Trust)。
(4)SPKI
在X.509系列PKI技术中,证书实现实体名字和公钥的绑定。在分布式系统中,对于事先并不熟悉的两个通信实体来说,仅知道对方的名字对访问授权没有任何意义。从访问控制的角度来看,提供服务的实体更关心请求的实体是否有访问的授权。SPKI(Simple Public Key Infrastructure)就是为了实现名字和授权绑定的一种PKI技术。在SPKI中,所有的实体都可以以证书的方式把自己得到的授权通过委托(Delegation)转让给其他实体。
(5)DNSSEC
DNSSEC(DNS Security)是为了特殊目的设计的一种PKI,它是为了保护DNS安全而设计的。
Web服务访问控制需要PKI技术提供底层的支撑,但不限制使用具体的PKI技术。因此Web服务的访问控制不需要了解PKI技术底层是如何实现的,而只需要了解如何使用即可。XKMS就是为了让开发人员在Web服务中使用PKI技术,在使用过程中开发人员只需要了解如下几个问题。
(1)PKI管理信任证(Credentials),如X.509证书等。
(2)信任证是用来表明拥有者的一些特性,如名字、授权信息及属性信息等。
(3)在信任中出现的名字可能是一个人、一个公司或一个网络的名字,也可能是一个E-mail地址。
(4)在处理请求时,所有的信任证都需要进行严格的验证,包括验证信任证的拥有者是否就是服务请求者,并是否拥有相应的私钥。
(5)信任证在颁发后,可能由于某种原因需要注销,如相应的私钥泄露、信任证的信息无效(超过规定的日期等),以及信任证的拥有者利用信任证做了一些非法行为等。
XKMS不关心PKI技术的实现细节,只关心开发人员在Web服务环境下如何使用PKI。因此,XKMS可以看做是Web服务应用程序和PKI之间的一个接口,如图5-1所示。
错误
![]() |
| 图5-1 XKMS和PKI关系图 |
这种组织方式有如下好处。
(1)减少应用程序的复杂性
XKMS提供了必需的XML和SOAP协议的支持,这样应用程序只需要调用XKMS的接口即可实现各种PKI需要的功能,使应用程序的复杂性降低。
(2)容易编码
传统的PKI技术编码相当复杂,需要特定PKI技术的开发工具支持,或者需要操作系统支持。同时应用程序之间的互操作性可能比较差,给测试工作带来麻烦。而基于XKMS方式,开发人员可以使用统一的方式使用PKI技术,同时方便测试。
(3)方便新PKI技术的部署
一个PKI技术的推广和应用,需要得到广泛的支持,但是应用程序一般不愿意使用一个部署不广泛的PKI技术。这样导致了一个恶性循环,从而影响了PKI的使用范围。一般来讲,一个PKI技术从设计到广泛应用,大概需要10年左右的时间。而XKMS将一个PKI变成一个信任服务,从而可以在很大范围内迅速得到应用,改变了过去很难部署的状况。
(4)中心的信任管理
XKMS提供了一种中心客户机管理方式,可方便地实现各种客户机安全策略,减少了传统PKI管理客户机的复杂性。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||