【发布时间】:2012-05-14 11:14:49
【问题描述】:
我需要实现一个 jax-ws 客户端。
以下是提供商文档对安全性的评价
目前,我们使用 SOAP 消息安全 1.0 版规范 http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
该标准使用了 W3C 规范中的另外两个:
XMLENC (http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/)
和 XMLDSIG (http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/)对于签名,使用直接的“SecurityTokenReference” 指定 X509 的“URI”和“valueType”的“reference”是强制性的。为了 加密,我们也推荐它,但我们也支持按顺序 首选对 keyIdentifier、X509IssuerSerial 或 键名。
加密和签名的块必须是“body”标签。
我们建议使用:“rsa-sha1”作为签名,“rsa-1_5”作为签名 加密密钥和用于加密正文的“tripledes-cbc”。
所以我想出了以下策略(从 netbeans 生成)。但是……我觉得不合适。尚无法访问 Web 服务,但我不确定规范版本是否匹配。我读了很多关于这个主题的书,但我仍然有些困惑。这个政策看起来好吗?
<wsp1:Policy wsu:Id="ListeOperationsPeriodeSoapBindingSoapPolicy">
<wsp1:ExactlyOne>
<wsp1:All>
<sp:TransportBinding>
<wsp1:Policy>
<sp:TransportToken>
<wsp1:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp1:Policy>
</sp:TransportToken>
<sp:Layout>
<wsp1:Policy>
<sp:Lax/>
</wsp1:Policy>
</sp:Layout>
<sp:AlgorithmSuite>
<wsp1:Policy>
<sp:TripleDesRsa15/>
</wsp1:Policy>
</sp:AlgorithmSuite>
</wsp1:Policy>
</sp:TransportBinding>
<sp:Wss10/>
<sp:EndorsingSupportingTokens>
<wsp1:Policy>
<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp1:Policy>
<sp:WssX509V3Token10/>
</wsp1:Policy>
</sp:X509Token>
</wsp1:Policy>
</sp:EndorsingSupportingTokens>
</wsp1:All>
</wsp1:ExactlyOne>
</wsp1:Policy>
<wsp:Policy wsu:Id="ListeOperationsPeriodeSoapBindingSoap_perform_Input_Policy">
<wsp:ExactlyOne>
<wsp:All>
<sp1:SignedEncryptedSupportingTokens>
<wsp:Policy>
<sp1:X509Token sp1:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp1:WssX509V3Token10/>
</wsp:Policy>
</sp1:X509Token>
</wsp:Policy>
</sp1:SignedEncryptedSupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
编辑: 我还不能让它用 wsit 发送预期的消息。例如,使用 Netbeans 向导,如果不使用寻址,我无法获得加密的标头。它应该是可能的吗?
我用旧的轴 1 类和 wss4j 破解了一些东西,它可以工作,但它很难看,我宁愿使用更面向未来的东西。
【问题讨论】:
-
我无法使用 wsit 发送预期的消息。例如,使用 Netbeans 向导,如果不使用寻址,我无法获得加密的标头。它应该是可能的吗?我用旧的轴 1 类和 wss4j 破解了一些东西,它可以工作,但它很丑陋,我宁愿使用更面向未来的东西。
-
这更像是一个代码审查问题,属于代码审查网站。
标签: java web-services jax-ws ws-security java-metro-framework