应用WSDK - 实践Web Services的X.509证书签名(序)

** 应用 WSDK - 实践 Web Services 的 X.509 证书签名 **


小气的神

2002-12-18

Article Type: OverView

难度等级: 2/9

版本: 1.18

好了,我想这是一个美貌的时刻,至少对于许多平凡、依赖、新潮而且很 Cool 的微软开发人员来说, WSE 1.0(Web Services Enhancements 1.0 for Microsoft.NET) 的发布绝对是一种经济而解脱的选择和期许。 WSE1.0 会很快占领所有低端和中高的 Web Services 开发和应用市场,它非常的经济而低廉并且非常 ”Strong” ,甚至无法不吸引任何 Web Services 的开发人员。难怪 Don Box 一个月前豪语预言 Web Services 的第二阶段已经结束,未来任何书面上的协议书写和争论已不再重要,市场上需要重量和杀手级的“ Web Services Server ”。很好,整个 WSE 一扫 Web Services 所有有关 Message 级的协议和应用的关键点,无论这个领域的竞争对手多么顽强和凌人,毫无疑问的是落后了很大的一步,整个 2002 年度微软的所有产品,不是技术、市场和 .NET 策略的问题,而是太快,速度太快;无论今年 IT 裁员的比例多大,都没有微软的用户掉队的比例大, ” 他们明显和轻而易举的放慢了前进的步伐 ” 。

WSE 最早的版本是 GXA->WSDK->WSE ,也请原谅我还没有使用最新 WSE 作为文章的标题,尽管我们已经在使用它了。我愿意在这里讨论一下我们的旅途,我的 ** 第一篇 ** 《应用 WSDK 》是关于 WSDK 的, ** 第二篇 ** 《应用 WSDK 》则讲述了有关从 WSDK 迁移到 WSE 的一些命名空间的变化,这和 9 个月前从 Framework Bate2 迁移到 Framework V1.0 一样,但工作量小很多。 ** 第三篇 ** 《应用 WSDK 》则开始了 Web Services 有关 WS-Security 的实践,之外也强调了有关 ** 调试工具 ** 的问题,也就在那篇文章, WSE1.0 发布了。

这篇文章我们会实践 Web Services 中 WS-Security 有关 X.509 证书签名的问题,在之后还有一篇或两篇文章会实践对称加密 (Symmetric Encryption) 和非对称加密 (Asymmetric Encryption) 的问题,当你也实践过这五篇文章之后,你会发现实际上它覆盖了 WSE 最基本的功能和编程方式,这也覆盖了目前 WSE1.0 中 QuickStart 的所有例子(我更喜欢自己的这些例子和实践)。之后我也修改文章的标题,迁移到新的 WSE 的“称谓”上,之后的旅程可能是关于一些高级或 WSE1.0 基本功能之上的应用 ContentBaseRouting( 第二篇之上的高级应用 ) , CustomBinarySecurityToKen (第三四篇之上的高级应用)、 CustomFilter 以及 Pipeline 定制 (WSE 内核或原理级的一些应用 ) 。整个的过程其实是你学习和理解 WS-Routing(WS-Referral), WS-Security, WS-Attachments(DIME) 等 Web Services 协议的过程,所以会非常的美妙和有趣。

当然 WSE 也是有缺点的,你接触的越久会发现它显著的 ”A Filter-centric Model” ,目前可能你如果用 WSE 写了你的 Services ,那么可能意味着你也需要用 WSE 或兼容的工具来生成你的客户端,浅台词是你需要能够对 Server 和 Client 端都有足够的控制能力,因为目前 IBM 或 Bea 的 Web Services 工具可能并不完全兼容或认识 WSE 的描述 ( 当然你说这不好,不符合你以前印象中的 Web Services ,是的,你这么想是非常中肯和正确的 ) 。又比如, Tim Ewald 也说了, ”The WSE implementation of WS-Security gives you direct control over when and how a message is authenticated, but you have to write some code to map username to passwords or interpret the meaning of particular digital certificates.” 我或是你的老板都会教导我们:从“ Long Time ”和“ Short Time ”来计划或做一件事情或一笔生意, WSE 我想也一样,需要你从更多的角度和眼光来看待它,短期它是非常非常好的技术和基础,它可以真正让 Web Services 为你做一些雄心勃勃而现实的事情;但从长远来看,它不是最终的,它不是微软 GXA 策略的最终体现,它会改变、发展和成长 ( 甚至为 IBM 、这些 Web Services 对岸的合作者妥协或混合 ) ,但目前它迈出的这一步是非常必要、优雅和意味深长。

”From my perspective, the flexibility of WSE is a huge asset. It provides plumbing to handle the grungy details of building messages with advanced protocol headers without forcing you to adopt a particular programming model. The means you can use WSE to solve a very wide range of problems without having to stay inside a particular set of architectural boundaries.” (Tim Ewald / December 2002)

也请允许我改变讲述的方式,对于这次实践我不在像之前那样介绍很详细的步骤和过程,因为所有的方式是类似的,不同的是一些需要注意的细节,那么我会在下面的文章中一一的说明。因为这整个的过程是一个理解和实践的过程,行动是最大障碍。

1. 有关相关的文章。

这是我愿意实践的最大原因,因为我发现相关的文档相当的少,所有的文章历历可数,而中文的文档我希望你们愿意从这里看到最新的 J

你一定需要看的:

** Programming with Web Services Enhancements 1.0 **

WS-Security Authentication and Digital Signatures with Web Services Enhancements

** Inside the Web Services Enhancements Pipeline **

可以参考和找到的

** Compare Web Service Security Metrics **

** Use X.509 Certificates with the WSDK Technical Preview **

** Dig Into WS-Security with the WSDK Technical Preview **

** Test-Drive Microsoft's New Web Services Development Kit **

** Web Services Development Kit Technology Preview (MS) **

** /WSDK Web Service Development Kit dev article **

无论如何这些文档是有帮助也可能是没有帮助的,但它们可能是有关于这个话题尽可能多的资源了。有关 WSE 只有我上面列的一定要看的三篇。我的应用 WSDK 篇从第二篇开始和 WSE 都是兼容的。

在 WSE 环境中调试和实践 WSDK 是痛苦和苦闷的,我想这里最大的挑战是你需要熟悉 WSE 的编程模型,因为 WSDK->WSE 本质上没有变什么。

2. 有关安装。

这里主要是关于针对那些安装 WSDK 的。据我的经验许多安装过 WSDK 的机器,再安装 WSE 时会有些小小的问题,有时 WSE 不能完全删除原来 GAC 中 WSDK 的问题,而在安装 WSE 时产生错误。

如果你已经安装了 WSDK 或 WSE1.0 之前的版本,那么安装之前,你最好执行下面的命令:

Gacutil /u Microsoft.Web.Services ( 或 Microsoft.WSDK )

nGen / delete Microsoft.Web.service ( 或 Microsoft.WSDK )


另外有关 X.509 证书的问题。

请你无论如何请参考 WSE 文档中的 Readme.htm 和 Managing Applications Created with the Web Services Enhancements->Managing X.509 Certificates 一节的描述,先设置你的 Certificates 环境。

如果你没有 Certificates Server 或是你无法获得一个 CA Certificate 那么你可以使用 .NET Framework 中的 makecert.exe 也可以生成一个可以使用的证书。这篇文章使用的也是用 makecert.exe 生成的证书。

如果你决定使用 makecert.exe 那么确保你的 .NET Framework 必须是最新版本的也就是至少要 1.1 的,不然老工具生成出来的证书是无法工作的。

我测试通过的环境是 Windowns .NET Server 2003 RC1 3663, VS.NET 7.1.2215(Everett Bate 1) . Microsoft.NET Framework 1.1.4322

如果你也同样使用 Windows.NET Server 2003 那么你需要保证 ASP.NET 也运行在 Framework 1.1 上。并且清楚 apnet_wp 现在运行在 NETWORK SERVICES 用户下而不是以前的 System 下。

3. 有关新的工具和环境。

这里需要讲一下你可能会 Download 的 Web Services Enhancements 1.0 Settings 这是 WSE Team 内部使用的一个工具 , 作为 VS.NET 的一个 Plug-in 工具在使用 , 没有任何的技术支持 ,也许未来会并在 Everett 中,它主要帮助你完成比较繁琐的配置文件 (web.config) 的手工设置问题,因为在使用 WSDK 时那么神秘的 PublicKeyToken 数值让我迷惑和不知道从那里获得,现在非常好了,如果你使用 VS.NET 它很好的集成在里面,几乎都是自动的。当然我不知道中文版本的 VS.NET 是否一样可以。但我想一样可以使用。

重要的是这个工具几乎对你的编程不会有任何的帮助,它减少的是你手工粘贴 / 复制的机械劳动。不安装这个软件用 VS.NET 仍然可以开发 WSE 的应用。但我很难想象不使用 VS.NET 来使用 WSE 的,当然也可以,但真的很少有人这么做。当然这里还有一个未证实的说法,我曾在第二篇中提过,安装 WSE1.0 之后, VS.NET 在加入有 Microsoft.Web.Services.DLL 的 Web Services 引用时会自动生成两个代理类一个从原来的 System.Web.Services.Protocols.SoapHttpClientProtocol继承,另外一个从Microsoft.Web.Services.WebServicesClientProtocol 继承并且会将代理类名后自动加 ” Wse ” 区别原来的代理类。这将非常方便,上几篇我都是手工用 WSDL.exe来产生代理类,然后手工替换。现在的传说是,有一种说是安装WSE1.0后就有这个功能;另外一种说是安装了WSE Setting之后才有这个功能,至于是那种我就不清楚了 J

我的建议是 : 在你项目的开始你先用这个工具设置好相关的参数,因为之后如果你的 Solution Explorer 中有多个 Project ,特别是有 WinForm 的 Project 时, WSE Setting 的菜单可能会突然不出现了。这样你几乎又要重新开始手工设置了。当然可能是我自己的原因,因为我当时安装 WSE Setting 时没有关闭 VS.NET J

无论如何请你从 WSE Install Directory\Unsupported\WseSettings\Readme.htm 开始使用这个工具。

似乎还有许多,真正的还没有开始呢,下次再说吧。最后有整个的相关文件你可以 Download .

** 相关文件: ** ** [WSDKX509.zip 71K] ** ** **


特别 :

本文原创 , CSDN 署名首发 , 所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议 , 请发电子邮件给 **_ [email protected] _ **

欢迎访问我的 WebSite : **_ www.dotNETTools.org _ **

Published At
Categories with Web编程
Tagged with
comments powered by Disqus