处理web服务中的不对称标头
本文关键字:不对称 web 服务 处理 | 更新日期: 2023-09-27 18:29:35
晚上好,
我正在将一些遗留的.NET 2代码迁移到.NET 4。在这个项目的一个小角落里,有一个对第三方运行的SOAPWeb服务的WSE调用。该服务很奇怪——它使用UserToken
身份验证,这很好,但它的这种方式似乎不能很好地与WCF配合使用。
我的第一种方法是将绑定配置为使用TransportWithMessageCredential
,并通过<clientName>.ClientCredentials.UserName
设置用户名/密码。在运行时,这引发了一个异常,表明响应中缺少安全性。在与Fiddler进行了一些调查后,我发现在发送UserToken
标头时,来自服务的响应中没有安全标头。WCF认为格式化无效,并引发异常。
作为一个实验,我将绑定切换为使用Transport
安全性,并在端点配置中添加了<headers>...</headers>
块,本质上是对凭据进行硬编码。由于WCF没有尝试验证消息凭据,因此此操作成功,WCF感到满意。
我已经有了一个可以工作的原型,但从设计的角度来看,我真的很不满意,但我不知道该怎么想出更好的解决方案。
有没有办法(1)配置服务,使其发送UserToken
,但在返回时不需要安全块,或者(2)在代码中注入SOAP标头,使其比放入配置中更具动态性?
谢谢!
首先使用WCF BindingBox将基本http绑定转换为自定义绑定。然后在自定义绑定的安全元素上添加以下内容:
enableUnsecuredResponse="true"