【发布时间】:2016-06-28 17:06:02
【问题描述】:
我的要求是实现一种方法,通过使用传入的用户名、密码来生成 ws 安全标头。
因此有人可以通过提供用户名和密码从 xslt 调用我的方法,并且我的方法应该能够返回安全标头,并且他们可以在soap请求中附加此安全标头以调用第三方网络服务。
我正在寻找可以通过获取用户名和密码生成肥皂安全标头的 api。
我发现 WSS4JOutInterceptor 需要端口和服务信息,但在我的情况下,我只有 2 个参数(用户名、密码)。
请建议除了创建 SoapEnvelop 并向其添加安全元素之外是否还有其他 API/方法?
<oas:Security xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <oas:UsernameToken xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" oas1:Id="UsernameToken-1"> <oas:Username> lakshmi </oas:Username><oas:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MTQ2NzA5NTg3MjM5Mw==</oas:Nonce> <oas:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">uSlFkVhDynZoCXFojlM1w4UrJYY=</oas:Password><oas1:Created>2016-06-28T06:37:52.425Z</oas1:Created></oas:UsernameToken></oas:Security>
【问题讨论】:
-
使用 cxf 时使用 xslt 构建请求的原因是什么?你的方法的输出应该是什么?一个xml字符串?请添加更多您真正需要的信息。
-
@Frank 你很聪明。我的方法的输出应该是 xmlString。在我们的项目中,我们仅通过 xslt 将传入的请求(XML)转换为肥皂格式。可能是我在帖子中传达的错误,我们没有使用任何 CXF 将传入的 XML 转换为 SOAP 格式。当前要求是通过获取用户名和密码来创建安全标头。
-
所以你需要为出站连接生成soap头,而不用担心body是如何生成的:xslt等不是吗?可能您不需要 CXF。如果您知道,请添加所需标头格式的示例,或者至少添加您的服务器设置的二进制安全令牌限制
-
@pedrofb 这正是我想要的。肥皂正文和其他标题部分由 XSLT 处理。我编辑了问题广告添加了预期的标题格式。请看一下。(我不知道如何链接文件,所以我添加了问题)。目前,我们使用 Base64 编码格式对所有标头进行硬编码并创建密码摘要、Nonce 等,并附加到安全标头并返回该字符串。我想用一些 api 创建这些东西。
-
嗨@lkredy1231,你检查答案了吗?
标签: java web-services cxf ws-security usernametoken