我正在尝试使用需要身份验证的soap服务传递给他一个SAML断言,由于某些原因我手动完成(请不要开始建议“使用这个或那个库”,我需要了解理论上至少必须做些什么。
到目前为止,我做到了:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<saml:Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" AssertionID="..../ds:Signature></Assertion>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>....
但结果是响应错误:
wsse:InvalidSecurity,缺少wsse:请求中的安全标头
为什么会这样?直接重用收到的“&lt; saml:Assertion”是错误的吗?我应该以某种方式处理并重新签名吗?
答案 0 :(得分:0)
缺少名称空间参考!
安全块中缺少文本
xmlns:xenc="http://www.w3.org/TR/xmlenc-core1/"
启用xenc块的断言