我使用 WWSAPI 继承了一个用 c++ 编写的现有且可工作的 Web 服务。我必须在soap头中使用passworddigest来实现基于WS-Security的安全机制,像这样:
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="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">
<wsse:UsernameToken wsu:Id="UsernameToken-5094D0E1418B986BF215754539660332">
<wsse:Username>test</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">sqPh/Bap7ER6j+n+2iYlI+4Qt9A=</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">1ROYkV/ZftvGi17KmsvgnQ==</wsse:Nonce>
<wsu:Created>2019-12-04T10:06:06.032Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
我既不是 Web 服务专家也不是 WWSAPI 专家,但我了解 Web 服务的基础知识。我试图了解 WWSAPI 文档,但不明白从哪里开始实施这种安全性。
我通过使用绑定 WS_STRING_USERNAME_MESSAGE_SECURITY_BINDING_TYPE 进行了测试,我可以为此定义一个密码验证器回调,这似乎与一个简单的用户/密码方案一起使用。但是在哪里/如何定义密码摘要安全机制?
使用 API,我期待一个简单的设置来定义基本的摘要机制和一个回调来接收随机数、创建日期、用户名和密码,但我不明白从哪里开始。我不明白这是否需要简单的声明(绑定 + 属性 + 回调),或者我是否需要编写一些代码,例如手动解析 xml 标头。
有人使用 WS-Security 实现了 WWSAAPI Web 服务,如何实现?