如何使用 WS-Security 并从 ASMX Web 服务访问 UsernameToken?
好的,我们有一个旧版 ASMX Web 服务,当前在 .NET 3.5 中运行,并且我们正在使用 Visual Studio 2008。
问题是,我们需要添加身份验证,并希望在不破坏的情况下利用 WS-Security 模型当前不需要身份验证的任何现有内部客户端。
我们考虑过添加自定义标头,但这不太符合 WS-Security 风格。此外,升级到 WCF 虽然是一个长期目标,但在短期内并不可行。
有没有办法在VS2008 ASMX Web服务的soap标头中间接访问UsernameToken(假设它是由客户端传递的)?
Okay, so we have a legacy ASMX web service that is currently running in .NET 3.5 and we're using Visual Studio 2008.
The problem is, we need to add authentication and would like to take advantage of the WS-Security model without breaking any existing internal clients who don't need to authenticate currently.
We've thought about adding custom headers, but that's not very WS-Security-ish. Also upgrading to WCF, while a long term goal, is not viable in the short-term.
Is there a way to access the UsernameToken (provided it's passed by the client) indirectly in the soap header of a VS2008 ASMX web service?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试 Web 服务增强功能 (华尔街英语)3.0。这增加了对 旧 WS-Security 版本的支持(我认为是 2004 版本 - WCF 支持 2005 和 2007 版本)。它位于 ASMX 之上,不会干扰它,并且仍然可以在 .NET 3.5 / WS2008 中工作。
现在来说说缺点:
示例
在客户端上指定凭据:
在服务器上验证凭据:
在服务器上读取凭据:
You could try Web Services Enhancements (WSE) 3.0. This adds support for an old version of WS-Security (the 2004 version I think - WCF supports the 2005 and 2007 versions). It sits on top of ASMX without disturbing it, and does still work in .NET 3.5 / WS2008.
Now for the downsides:
Example
Specifying credentials on the client:
Authenticating credentials on the server:
Reading credentials on the server: