web-services - 配置 wcf soap 1.2 服务
问题描述
我正在实现应该接受带有 HTNG 2.1 标头的 SOAP 1.2 请求、WS-Addressing(在系统和地址目标之间传递消息 ID)和 WS-Security(仅用户身份验证)的服务实现。我已经完成了处理有效负载消息和生成正确响应的整个业务逻辑,但是我在将服务配置为预定义请求时遇到了真正的麻烦。这里是:
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<soap2:Header xmlns:soap2="http://www.w3.org/2003/05/soap-envelope"
xmlns:htng="http://htng.org/1.3/Header/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wss="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<wsa:Action>http://MyHost/MyService_SubmitRequest</wsa:Action>
<wsa:ReplyTo>
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
</wsa:ReplyTo>
<htnga:ReplyTo>
<wsa:Address>HTTPS://ResponseHost/Response.SVC</wsa:Address>
</htnga:ReplyTo>
<wss:Security mustUnderstand="1">
<wss:UsernameToken>
<wss:Username>string</wss:Username>
<wss:Password>string</wss:Password>
</wss:UsernameToken>
</wss:Security>
<wsa:MessageID>df559145-78a4-4c85-a264-bf99bbf8df9e</wsa:MessageID>
<htnga:CorrelationID>df559145-78a4-4c85-a264-bf99bbf8df9e</htnga:CorrelationID>
<wsa:To>https://pms.url</wsa:To>
</soap2:Header>
<Body>
<!-- Payload -->
</Body>
</Envelope>
我想在配置文件中进行配置,而不是在代码中,我已经尝试了所有可以在各种帖子中找到的配置选项,但没有任何成功。我知道我可能遗漏了一些我现在无法发现的关于 WCF 的基础知识,因此至少在正确的方向上有所帮助。
解决方案
据我所知,可以通过设置消息版本将 MesaageID/ReplyTo 标头添加到 SOAP 标头中。
如何在 WCF 请求和响应的肥皂头中添加 MessageID?
并且可以通过使用用户名/密码模式对客户端进行身份验证来添加 UsernameToken。
<customBinding>
<binding name="mybinding">
<textMessageEncoding messageVersion="Soap12WSAddressing10">
</textMessageEncoding>
<security authenticationMode="UserNameOverTransport" includeTimestamp="false" >
</security>
<httpsTransport></httpsTransport>
</binding>
</customBinding>
结果。正确的方式为 SOAP webservice 通信 WSSE Usernametoken
我不知道如何将标头添加到 SOAP 标头,它可能与 WCF 跟踪有关。
如果有什么我可以帮忙的,请随时告诉我。
HGNGA:CorrelationID
推荐阅读
- architecture - 引导程序与工厂之间有什么不同
- c++ - 如何在 C++ 项目的 Cmake 文件中添加 Mac OS 框架
- node.js - 是否有任何格式字符串可以直接从 GraphicsMagick 对象中读取 Caption[2,120] 数据?
- cassandra - 如何在 cassandra 查询语言中使用 DATE 数据类型编写查询?
- snowflake-cloud-data-platform - 雪花复制到不从 blob 存储中清除的语句中
- java - (TensorflowLite/Android) Unable to instantiate activity ComponentInfo
- vue.js - 如何使用 vue 和 vue2-leaflet 获取地理位置?
- ios - 如何在没有 iPhone 的情况下创建配置文件
- vba - 使用“First Name Last Name”回复电子邮件,而不是“Last Name, First Name”,使用特定字体
- python - PyQt QGridLayout 删除除顶行之外的所有内容