小编Sti*_*sen的帖子

在Java中为ws-security UsernameToken实现密码摘要

我试图从服务器调用一个ws-security安全的Web服务,遗憾的是它本身不支持这个.我采用的方法是实现一个.jsp,它充当实际端点URL的反向代理,在这个过程中添加了带有ws-security元素的元素.

这似乎工作得很好,我相信我已经使用正确的命名空间等正确构造了XML.我已经通过比较XML与SOAP-UI生成的XML来验证这一点.

问题在于实现密码摘要生成器.我没有得到与使用相同的NOnce,xsd:dateTime和密码输入以及以下代码的SOAP-UI相同的结果.

StringBuffer passwordDigestStr_ = new StringBuffer();

// First append the NOnce from the SOAP header
passwordDigestStr_.append(Base64.decode("PzlbwtWRpmFWjG0JRIRn7A=="));

// Then append the xsd:dateTime in UTC timezone
passwordDigestStr_.append("2012-06-09T18:41:03.640Z");

// Finally append the password/secret
passwordDigestStr_.append("password");

System.out.println("Generated password digest: " + new String(com.bea.xbean.util.Base64.encode(org.apache.commons.codec.digest.DigestUtils.sha(passwordDigestStr_.toString())), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

我认为问题在于实现前两个元素的散列,如http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf所述.

注意,使用其解码值的八位位组序列对随机数进行散列,而时间戳使用其元素内容中指定的UTF8编码的八位位组序列进行散列.

如果有人能帮助我解决这个问题,那会很好,因为它开始让我发疯!如果您能提供源代码,那将是理想的选择.

java ws-security soap usernametoken

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

soap ×1

usernametoken ×1

ws-security ×1