问题标签 [wse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5768 浏览

wcf - 从 WCF 客户端连接到 WSE 3.0 Web 服务

我无法从 WCF 客户端连接到第 3 方 WSE 3.0 Web 服务。我已经实现了此知识库文章中所示的自定义绑定类:

http://msdn.microsoft.com/en-us/library/ms734745.aspx

该问题似乎与 Web 服务使用的安全断言有关 - UsernameOverTransport。

当我尝试调用方法时,出现以下异常:

System.InvalidOperationException:'MyWebServiceSoap'.'[namespace]' 合同的'WseHttpBinding'.'[namespace]' 绑定配置了需要传输级别完整性和机密性的身份验证模式。然而,传输不能提供完整性和机密性。

它需要用户名、密码和 CN 号码。在供应商提供给我们的示例代码中,这些凭据捆绑在 Microsoft.Web.Services3.Security.Tokens.UsernameToken 中。这是供应商提供的示例:


这适用于安装了 WSE 3.0 的 2.0 应用程序。这是我的 WCF 客户端的代码片段:

我在网上搜索了这个问题的答案。有些资料让我很接近(比如 MS KB 文章),但我似乎无法克服困难。有人可以帮我吗?

0 投票
0 回答
1998 浏览

wcf - WCF 在响应中使用内联安全令牌调用 WSE 2.0 WS-Security 服务 - “找不到令牌身份验证器”

我在 .NET 1.1 和 WSE 2.0 中有一个 Web 服务,它使用 WS-Security 和 x509 证书进行签名和加密。我正在尝试配置 WCF 客户端以连接此服务,但事实证明它比我预期的更具挑战性。

通过使用自定义绑定,我已经解决了大部分版本控制问题,但我被困在最后一点。Web 服务在响应 SOAP 信封中包含两个 BinarySecurityToken 元素——一个用于加密证书,一个用于签名证书。

问题似乎是 WCF 在第二个令牌上窒息。这是错误消息:

“找不到 'System.IdentityModel.Tokens.X509SecurityToken' 令牌类型的令牌身份验证器。根据当前的安全设置,无法接受该类型的令牌。”

在 MSDN 上找到了这个对话,它描述了我遇到的确切问题;但不幸的是,它没有提供好的分辨率。创建消息编码器以将信封破解为 WCF 可以处理的东西对我来说似乎是错误的。WSE 2.0 可以很好地处理内联安全令牌——必须有一种方法可以强制 WCF 做同样的事情。

虽然我确实拥有原始 WSE 2.0 服务的完整源代码,但目前还不能选择更改它处理安全性的方式。

这是我当前使用的安全绑定元素:

0 投票
1 回答
515 浏览

wcf - 使用 WCF 连接到 https 后面的 asmx 页面,仅需要签名

我正在尝试连接到需要我在连接之前使用证书签名的 Web 服务。

在 WSE 3.0 中,我所要做的就是创建一个证书策略并选择“仅签名”单选按钮。这在 WSE 3.0 中运行良好,但我想在 Visual Studio 2008+ 上使用它(wse 3.0 仅支持 2005)。为了绕过 2005 年唯一的 WSE 限制,我正在尝试将我的应用程序转换为 WCF。

我阅读了有关将 WSE 转换为 WCF 的 MSDN 文章(例如 Aug2004 限制),但它没有提及任何有关保护级别的内容。

从外观上看,支持 utf-8 的默认绑定不支持仅签名保护级别。不支持 utf-8 的默认绑定(如 tcp 的东西)确实如此,但这并不能真正帮助我了解我如何尝试连接到 asmx 页面。customBinding 似乎是关键(如 MSDN 文章中所述),但我找不到任何不需要加密的有效保护级别。

有什么建议么?有什么明显的我失踪了吗?

0 投票
1 回答
12102 浏览

.net - 如何防止我的 .NET SOAP 客户端在 HTTP 标头中包含“Connection: KeepAlive”。(使用WSE3.0)

在 HTTP 连接标头中,我的 Web 服务客户端包括: Connection: Keep-Alive

我想禁用它。 在做了一些研究之后,看起来这样做的方法是将SoapHttpChannelOptions类的 KeepAlive 成员设置为 false。但是,我看不到SoapHttpChannelOptions在使用 WSE3.0(Web 服务增强)为我在 Visual Studio 中生成的 Web 服务客户端类中访问/修改的方法。

在我的例子中,生成的存根类扩展Microsoft.Web.Services3.WebServicesClientProtocol

我一直无法找到搜索谷歌的任何示例,并且 SoapHttpChannelOptions 类的大多数成员都被继承到 WebServicesClientProtocol 类中......

SoapHttpChannelOptions 参考
WebServicesClientProtocol 参考

注意:我不是要修改网络服务器。我正在尝试修改 Web 服务客户端。

0 投票
3 回答
4007 浏览

wse - Microsoft.Web.Services3.ResponseProcessingException

我将使用 WSE 3.0 的 Web 服务部署到测试服务器。我收到下面的神秘错误。知道这意味着什么以及如何解决吗?提前致谢!

Microsoft.Web.Services3.ResponseProcessingException: WSE910: 响应消息处理过程中发生错误,您可以在内部异常中找到错误。您还可以在 Response 属性中找到响应消息。---> System.Xml.XmlException: 'wsse' 是一个未声明的命名空间。第 1 行,位置 97。在 System.Xml.XmlTextReaderImpl.Throw(String res, String arg, Int32 lineNo, Int32 linePos) 在 System.Xml.XmlTextReaderImpl.LookupNamespace(NodeData 节点的 System.Xml.XmlTextReaderImpl.Throw(Exception e) ) 在 System.Xml.XmlTextReaderImpl.ElementNamespaceLookup() 在 System.Xml.XmlTextReaderImpl.ParseAttributes() 在 System.Xml.XmlTextReaderImpl.ParseElement() 在 System.Xml.XmlTextReaderImpl.ParseElementContent() 在 System.Xml.XmlTextReaderImpl.Read( ) 在 System.Xml.XmlTextReader。

0 投票
1 回答
726 浏览

.net - WSE 3.0 信任链错误 - 我如何查看发回的证书?我想知道什么证书有信任链错误

当我在 WSE 3.0 中收到回复时,我遇到了信任链错误。

当我获取 WSDL 时,他们的证书很好。当我连接时,他们的证书很好。当我发送 XML 请求时,它喜欢我的公共证书。

WSE 不喜欢的是响应中的令牌。Microsoft.Web.Service3 调用 getelement,然后调用 loadbinarysecuritytoken,但随后检查链并且不喜欢它看到的内容。

我想知道它不喜欢什么令牌。我不确定如何查看令牌是什么。它是二进制数据,所以 HttpAnalyzer 没有多大帮助。

在我完全了解问题所在之前,我无法解决问题。他们给我发错了证书吗?它只是我没有的证书,需要增加我的个人信任吗?什么?

0 投票
2 回答
1491 浏览

.net - 如何获得 WSE 3.0 Web 服务来模拟我的客户身份?

我有一个基于 WSE 3.0 的 Web 服务,在 IIS 6.0 下的 Windows Server 2003 中运行。我希望 Web 服务进程模拟发送 Web 服务请求的客户端用户,但是该服务没有模拟客户端。

Web 应用程序有自己的应用程序池,当前设置为在网络服务标识下运行。Windows Server 2003 计算机帐户已启用 Active Directory 中的委派(至少根据我的 IT 人员)。服务 WSE 策略(在 wse3policyCache.config 中)如下所示:

该服务在其 web.config 中有以下条目(其中包括):

为应用程序启用匿名访问(这是必需的,因为服务不使用传输级安全性,消息级是)。机器帐户已注册以下 SPN:

客户端在其 wse3policyCache.config 中有以下内容:

客户端代码如下所示:

不过,该服务并没有冒充我的客户身份。我在服务中使用 log4net,当我要求它打印%username到 ASP.NET 跟踪日志中时,它总是NT AUTHORITY\NETWORK SERVICE而不是客户端用户 ID。有什么我做错了吗?有没有什么地方我可以查看 WSE 是否甚至试图执行模拟并失败?我确实在我的事件日志中看到了以下条目(MYDOMAIN 和 MYUSER 在这里被遮盖了):

在我的 WSE 跟踪文件中,我确实看到:

所以至少我知道 Kerberos 扩展正在处理我的 Kerberos 标头。

编辑:我的网络服务然后使用专有客户端通信库调用使用 SSPI/IWA 的另一台服务器(让我们称这第三台服务器为 foo 服务器)。我希望它在第二次调用 foo 服务器时使用客户端的身份。这意味着此客户端通信库调用AcquireCredentialsHandleInitializeSecurityContext使用 foo 服务器的 SPN 和不同的服务。在这种特殊情况下,foo 服务器实际上与 WSE Web 服务在同一台机器上运行(因此它使用 SPNmycompany/rd260-2)。由于第二个跃点是到同一台机器,我希望它使用 NTLM,但它仍然应该模拟我的 Web 服务客户端的用户身份,不是吗?在 foo 服务器的日志中,我看到它接受连接,使用提供的 IWA 安全上下文并告诉我,基于此安全上下文,连接用户是rd36-2$机器帐户,因为 WSE Web 服务在 IIS 中运行在网络服务身份(又与机器帐户相关联)下。在 foo 服务器的日志中,它接收到 IWA 安全上下文后,我最终想查看提交 Web 服务请求的用户的身份。将 foo 服务器移动到另一台机器以查看是否与此有关是否有用?

0 投票
1 回答
210 浏览

c# - WSE 中的 MessageID 格式

我已经使用 WSE 3.0 构建了一个 Web 服务,该服务应该与 IBM 的 WebSphere 等各种其他平台进行交互。在请求的寻址部分,MessageID 的内容需要采用 uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的格式。其他任何事情都会导致“错误请求”错误。有人告诉我,根据 WS-Addressing RFC MessageID 可以包含任何内容。有没有办法允许不符合该格式的 MessagdID?

谢谢!

0 投票
1 回答
651 浏览

c# - .NET WSE 客户端存根是线程安全的吗?

.NET WSE 从 WSDL 生成的客户端存根是线程安全的吗?

当然,“线程安全”不一定是一个严格定义的术语,所以我至少对以下内容感兴趣:

同一个存根类的不同实例是否可以由不同的线程同时访问,并具有与单线程执行相同的有效行为?

同一个存根类的单个实例是否可以由不同的线程同时访问,并且具有与在单线程执行中以某种任意方式交错的相同调用相同的有效行为?

您可能还希望使用此处描述的术语(以及源自此处)来更准确地讨论这个问题。

0 投票
1 回答
7463 浏览

c# - WSE032 error, WebServicesConfiguration cannot load config. section

I have developed a small tool to upload salary information to the swiss administration and I used WSE 3.0 with success. But now, one of my customers has reported that on his machine, my program crashes with the following stack trace:

I've tried to figure out what this means, but I must admit that I am a bit lost here. The program has a .exe.config file with the following contents:

Removing the <security> node from the XML above sort of fixes the issue (the WSE032 error vanishes) but this is not a solution in my case, as I need to configure the security this way in order to be able to sign the data I am transmitting later on.

Any idea what could be the issue. Obviously, WSE 3.0 has been installed on the customer's machine, since otherwise, the stack trace would not have shown it in the callers before WSE032 error happens.