0

我正在尝试使用 wss4j 连接到 Web 服务,以便使用用户名令牌安全性和摘要形式的密码来包装我的 xml,以下是我的请求输出:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security 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-C53A9DE4F384C9293314044748291431">
<wsse:Username>weblogicdev</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">cfxACgO/wSzJSIjd9r8119BURWY=</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">76O2tFwe2NQLw/ZOiTgtyA==</wsse:Nonce>
<wsu:Created>2014-07-04T11:53:49.141Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<mdsl:CustomerRequest xmlns:mdsl="www.mdsl.eft.cms.com">
<mdsl:Institution>1
</mdsl:Institution>
<mdsl:Customer_ID>00236615
</mdsl:Customer_ID>
<mdsl:Data_Level>A
</mdsl:Data_Level>
</mdsl:CustomerRequest>   
</soapenv:Body>
</soapenv:Envelope>

我似乎无法弄清楚为什么这个请求给了我一个:

<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<env:Fault xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<faultcode>wsse:FailedAuthentication</faultcode>
<faultstring>Failed to assert identity with UsernameToken.</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>

但是当我使用密码摘要在 jdev 上实现 ws 安全性时,请求有效。(使用 weblogic api 实现 jax-ws)

用户名 weblogicdev 和密码 weblogic123 有效,并且当我在 Web 服务上设置的策略是用户名密码令牌纯文本(明文密码)时,请求有效

oracle 处理摘要密码的方式与使用 wss4j 制作的密码不同吗?如果是这样,是否有人有我可以使用的算法来复制此密码摘要生成?

4

1 回答 1

0

根据您为 web 服务选择的身份验证方法,您可能必须将此用户/密码添加到 weblogic 管理控制台中的 SecurityRealm。

于 2015-02-27T14:58:44.527 回答