基于WSE安全断言实现Web服务身份验证

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:nibeibei
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着Web服务在分布式系统中的广泛应用,安全问题日益突出。文章描述了使用UsernameForCertificateAssertion安全断言对Web服务进行身份验证的实现方法,并给出了一个利用WSE实现Web 服务身份验证的说明性实例。
  关键词:WSE;安全断言;WEB服务
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31530-02
  Identity Authentication Based on WSE Security Assertions
  CHEN Jia-hong,HUA Hui
  (Jinling Institute of Technology,Nanjing 210001,China)
  Abstract:With the wide use of Web Services in distributed systems,the issues of Web Services security are becoming increasingly prominent.The paper introduces the method of implementing authentication of Web Services with UsernameForCertificateAs sertion Security Assertion,then illustrate Identity Authentication of Web Services with WSE.
  Key words:WSE;Security Assertion; Web Services
  
  1 引言
  
  越来越多的公司使用Web服务通过Internet 和公司 Extranet 将自己的产品和服务展示给客户和商业伙伴。在这些服务中安全是极为重要的。在网络是Intranet 或者 Extranet 的情况下,我们可以在一定程度上控制两端的终结点,这时可使用平台级的安全服务提供点到点的安全解决方案。但是,Web 服务基于消息的体系结构和跨越信任边界的异构环境对安全问题提出了新的挑战。这时,我们就必须解决跨中间结点的消息级安全。
  要实现Web服务安全,主要就是要实现以下两个方面的安全要求:
  (1)身份验证要求
  如果您的 Web 服务提供敏感的信息,就需要对调用方进行身份验证以支持授权。在 Windows 环境中,可以使用 Windows 身份验证。但是,当您不能控制两端的终结点的时候,可以使用 WSE 提供身份验证解决方案。WSE 为使用SOAP头传递身份验证详细信息提供了一个标准框架。
  (2)私密性和完整性要求
  如果要在 Web 服务请求或者响应消息中传递敏感的应用程序数据就要考虑如何才能保证它们在传输过程中保持私密性、防止被修改。WSE通过数字签名提供了完整性检查,它还支持对SOAP消息整体或部分加密。
  
  2 WSE安全断言
  
  Microsoft 已经发布了Web服务Enhance ments 3.0 for Microsoft .NET (WSE),它支持 WS-Security 以及一系列相关安全标准。我们可以使用WSE实现WEB服务消息级安全,包括身份验证、加密和数字签名。WSE3.0 一共定义了六种总控钥匙安全断言,分别是:AnonymousForCertificateAssertion、sernameForCertificateAssertion、UsernameOverTransportAssertion、MutualCertificate10
  Assertion、MutualCertifi cate11Assertion、KerberosAssertion,这些安全断言是WSE 3. 0中提供的最重要的安全功能,我们可以使用这六种安全断言中的任何一种实现Web服务身份验证。其中,UsernameForCertificateAssertion是使用比较多的一种安全断言,它采用对服务器端使用X.509证书进行验证,对客户端使用用户名令牌(UsernameToken)进行验证的方式实现Web服务身份验证。
  
  3 实例分析
  
  以下将结合一个虚拟的手机话费余额查询的Web服务的例子,讲述如何在Web服务中使用UsernameForCertificateAsser?tion安全断言来实现Web服务的身份验证。
  使用UsernameForCertificateAssertion安全断言时,服务器必须配置一个X.509证书及其相关的私钥,客户端需要配置有自己的用户名/密码令牌,以及服务器端分配的X.509证书(仅公钥)。实现步骤如下:
  (1)平台的构建
  本实例应用程序采用visual studio 2005开发,同时配合WSE3.0实现Web服务的身份验证。为了使用X.509证书,我们还需要使用.net平台下的两个工具软件make?cert.exe和certmgr.exe。makecert.exe是证书创建工具,它生成仅用于测试目的的 X.509 证书,它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中,此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。certmgr.exe证书管理器工具用于管理证书、证书信任列表(CTL) 和证书吊销列表 (CRL)。现在,我们就运行这两个工具创建并安装证书:
  makecert.exe -sr LocalMachine -ss My -a sha1 -n“CN=WSEQuickStartServer” -sky exchange -pe
  certmgr.exe -add -r LocalMachine -s My -c -n “WSEQuickStartServer” -r CurrentUser -s AddressBook
  特别注意:服务端和客户端都要安装刚才创建好的证书。
  创建一个名为“mobile.mdb”的Access数据库,在其中建立一张包括phoneNum(电话号码)、phonePsd(密码)、balance(余额)三个字段的数据表mobile。
  (2)Web服务的开发
  使用vs2005创建一个asp.net Web服务项目,为项目添加Microsoft. Web.Services3.dll引用,并在Service.cs文件中添加语句“using Micro?soft.Web.Services3;”,引用和名称空间添加好之后,我们就可以使用WSE了,如果WSE安装时选择的是和visual studio开发环境集成,那么此时你就可以直接右击Web服务项目,从弹出菜单中选择“WSE Settings 3.0…”菜单项,进入WSE Settings 配置界面,在General 选项卡中选中复选框“Enable this project for Web Services Enhancements”和 “Enable Microsoft Web Services Enhancement SOAP Protocol Factory”,启用WSE 保护,在Policy 页新建一个名为ServicesPolicy 的安全策略, 然后设置此安全策略,其中, 应用类型选择“secure a service application”,客户端验证方式选择“username”, 即采用UsernameForCertificateAssertion安全断言; 启用WS- Security 1.1 扩展, 并在保护级别中选择 “Sign and Encrypt”, 也就是说SOAP 消息必须签名和加密; 然后选择服务端的X.509 证书。安全策略建立好之后,通过在Web服务类service.cs中添加[Pol?icy("ServicesPolicy")]应用这个安全策略。Web服务类的代码片断如下:
  //省略名称空间的引用
   [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [Policy("ServicesPolicy")]
  public class Service : System.Web.Services.WebService{
  //省略其它代码
  [WebMethod]
  public string returnBalance(string phoneNum) {
  string balance = "";
  string myConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source ='f:\wsetest\mobile.mdb'";
  string mySelectQuery = "select * from mobile where phoneNum ='" + phoneNum + "'";
  OleDbConnection myConnection = new OleDbConnection(myConnString);
  OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
  myConnection.Open();
  OleDbDataReader myReader;
  myReader = myCommand.ExecuteReader();
  if (myReader.Read())
  {balance = myReader[2].ToString().Trim();
  myConnection.Close();
  return balance;}
  else
  {myConnection.Close();
  return "Error";}}
  同时,为了使服务端能够对客户端传递过来的用户名令牌进行验证,我们需要在项目中添加一个从类UsernameTokenManager继承的类MyUsernameTokenManager,代码片断如下:
  //省略其它代码
  using Microsoft.Web.Services3.Security;
  using Microsoft.Web.Services3.Security.Tokens;
  using System.Data;
  using System.Data.OleDb;
  namespace WSETest
  { //省略其它代码
   protected override string AuthenticateToken(UsernameToken token)
  {string phonePsd;
  string myConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source ='f:\wsetest\mobile.mdb'";
  string mySelectQuery = "select * from mobile where phoneNum ='" + token.Username + "'";
  OleDbConnection myConnection = new OleDbConnection(myConnString);
  OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
  myConnection.Open();
  OleDbDataReader myReader;
  myReader = myCommand.ExecuteReader();
  if (myReader.Read())
  {phonePsd = myReader[1].ToString();
  myConnection.Close();
  return phonePsd;}
  else
  {myConnection.Close();
  return "Error";}}
  再次进入WSE Settings 配置界面,在Security 页中添加一个SecurityToken Manager。在Built In Token Managers中选择“UsernameToken Manager”,然后将type 改为“WSETest.MyUsernameTokenManager”,点击“Add” 添加。这表示将由MyUsernameTokenManager类来处理用户名令牌,MyUsernameTokenManager类中的重载函数AuthenticateToken是用来验证客户端提交的用户名和密码的函数。如果验证成功,就允许调用Web Services查询话费余额;否则就会拒绝调用余额查询Web Services。
  (3)客户端应用程序开发
  在vs2005的解决方案中添加一个windows应用程序项目作为客户端应用程序,同样要添加Microsoft. Web.Services3.dll 引用,并在Form1.cs文件中添加语句“us?ing Micro?soft.Web.Services3;” ,同时,为了调用Web服务,我们需要在项目中添加一个到服务端Web服务的一个引用,以此作为服务代理,使我们在客户端应用程序中能调用Web服务。然后,我们也要为客户端设置WSE,在Policy 页新建一个名为“Client?Policy”的安全策略, 应用类型选择“se?cure a client application”表示是客户端程序。证书选择服务端分配的X.509证书,用此证书的公钥对用户令牌进行签名和加密,其它的设置和服服端类似。客户端代码片断如下:
  //省略其它代码
  using Microsoft.Web.Services3.Design;using Microsoft.Web.Services3.Security;
  using Microsoft.Web.Services3.Security.Tokens;
  using Microsoft.Web.Services3.Security.X509;
  using WSEClientWin.svc;
  namespace WSEClientWin
  {//省略其它代码
  ServiceWse sw = new ServiceWse();
  //省略其它代码
  private void button1_Click(object sender, EventArgs e)
  {string phoneNum = textBox1.Text.Trim();
  string PhonePsd = textBox2.Text.Trim();
  UsernameToken uToken = new UsernameToken(phoneNum,PhonePsd);
  sw.SetClientCredential(uToken);
  sw.SetPolicy("ClientPolicy");
  label3.Text = label3.Text + sw.returnBalance(phoneNum) +"元";
  }}
  客户端界面如图1所示:
  图1 客户端界面
  客户端程序运行后,点击“查询”按钮,客户端应用程序用手机号码和密码创建一个令牌,并且在服务代理sw上调用SetClientCredential()方法为服务端提供用户名/密码凭据,如果密码正确,服务端验证就可以通过,这时,客户端就可以调用Web服务方法返回数据库中相关手机号所对应的余额了。至此,服务端和客户端应用程序全部开发完成。
  
  4 结束语
  
  本文通过给出的使用WSE 配合数据库验证用户名/ 密码来获取Web 服务的实例,说明了使用WSE 保证Web 服务安全的基本措施和方法。WSE 3. 0 作为新推出的工具,在实现Web 服务安全方面提供了更加简便、更加全面的设计方案。在该工具的支持下,我们可以通过WSE 3. 0 的策略框架来设计安全架构,快速实现实际应用中的安全需求。
  
  参考文献:
  [1]Microstoft.MSDN.证书创建工具 (Makecert.exe)[EB/OL].http://msdn2.micros-oft.com/zh-cn/library/bfsktky3.aspx.
  [2]Microstoft. MSDN证书管理器工具 (Certmgr.exe)[ EB/ OL ].http://msdn2.microsoft.-com/zh-cn/library/e78byta0.aspx.
  [3]Keith Brown.Security Features in WSE 3.0.[EB/OL].http://msdn.microsoft.com/-msdnmag/issues/05/11/SecurityBriefs/default.aspx,2005-12.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
电脑为生活和工作带来了便捷,为了上网、办公、游戏、看电影,不少人甚至终日伏案在电脑前,然而电脑具有辐射、噪音、细菌等污染,这样带来了潜在的健康危害,长时间用电脑后,总是出现疲劳、恶心、视力下降、记忆减退等病状。为了减少电脑对人体健康的危害,建议用户选择环保型PC,以此让自己健健康康体验电脑生活。    一、电脑影响人体健康    对于一台电脑而言,它对人体所带来的危害很多,但总体概括起来主要有四方
期刊
暑期已然过去,应来了新学期的开始,对于升学的学生而言,在跨入大学新校园的时候,一定希望很快融入学习和娱乐的校园生活,如果有一台笔记本,不但可以上网查找学习资料,业余之下还可以看电影、听音乐、玩休闲游戏等,但对于学生而言,购买笔记本需要考虑实际应用,同时必须掌握一些基本采购常识。
期刊
一段时间来,ARP欺骗木马病毒在大面积危害局域网的安全。感染此木马病毒的计算机试图通过ARP欺骗手段截获所在网段内其实它计算机的通信信息,关因此造成网内其它计算机的通信故障。
期刊
参评软件信息及测试环境    本次横向对比测试中,我们选取了Foxmail、DreamMail(梦幻快车)、Koomail(酷邮)、The Bat! 四款邮件收发软件,均使用其最新版本。本次测试将从软件的界面、账户创建、邮件收发、邮件搜索、反垃圾邮件、安全性等多方面进行横向测试,为大家提供参考。具体的硬件测试环境如下:     账户创建和易用性对比    1.Foxmail  Foxmail第一次
期刊
朋友近来爱上了QQ邮箱,因为QQ是她每天必需用的东东,进入QQ邮箱方便,还有它提供了很多超值个性的功能,让她爱不释手。可是她平时使用的126、雅虎等邮箱,其中有许多的重要的联系人邮箱,想把它们加入到QQ邮箱中,这可如何操作呀!难道要一个一个来添加吗?这可不是一件简单的事儿,非把她搞晕不可。  虽然126、雅虎等邮箱都提供了联系人的导入/导出功能,但不能直接把导出的联系人添加到QQ邮箱中。经多次试验
期刊
摘要:网络资源的迅速增长使Web挖掘研究日益重要,文章介绍了Web挖掘的概念、流程以及分类,并从挖掘对象、方法、过程等方面分别对Web内容挖掘、Web结构挖掘、和Web使用挖掘进行详细的阐述。  关键词:数据挖掘;Web;Web内容挖掘;Web结构挖掘;Web使用挖掘  中图分类号:TP302文献标识码:A文章编号:1009-3044(2007)18-31502-01  The Rearch of
期刊
摘要:针对无线传感器网络的节能特性和网络应用对服务质量(QoS)要求的不断提高,提出了一种节能高效的服务质量管理机制,运用Agent技术实现传感器节点的信息采集和QoS预约,当网络环境变化时进行QoS协商与再协商。与传统QoS机制相比,基于Agent实现的QoS管理机制能够最大限度对支持网络应用,更适合传感器网络的节能要求,延长网络的生命期。  关键词:无线传感器网络;服务质量;代理  中图分类号
期刊
摘要:随着计算机网络的广泛使用,越来越多的应用需要可靠和有保证的网络服务,这就需要采用QoS(服务质量,Quality of Service)以保证网络提供稳定且有保障的服务。本文介绍了在思科网络设备环境下, NBAR(基于网络应用识别 Network-based Application Recognition)和CBWFQ(基于类的加权公平排队 Class-based Weight Fair Q
期刊
摘要:为了节能减排,保护环境,各地都实行热电联产,集中供热。热电厂的蒸汽用户分布在城市的各个角落,传统的做法是人工抄表,人工巡视,工作量非常大。GPRS(General Packet Radio Service)网络具有广大的覆盖范围,并且可以方便的接入Internet网络,实现数据的远距离传输。建立在GPRS网络基础上的热网远程监测系统,可以实现远程抄表,在线监测供热管网状况。  关键词:GPR
期刊
摘要: 通过较为详细地介绍Web服务及消息中间件技术,明确了将Web服务和消息中间件技术结合的切入点和优势,同时给出了设计面向Web服务的消息中间件系统的设计目标。最后,提出并讨论了一种面向Web服务的消息中间件模型。  关键字: Web服务;消息中间件;面向服务的体系架构;XML  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)18-31491-02  A Mod
期刊