签名和加密政策

yma*_*ros 18 java ws-security web-services java-metro-framework jax-ws

我需要实现一个jax-ws客户端.

以下是提供者文档关于安全性的内容

目前,我们在http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf上使用SOAP Message Security 1.0版规范.

本标准使用另外两个来自W3C规范:
XMLENC(http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/)
和XMLDSIG(http://www.w3.org/TR/2002)/REC-xmldsig-core-20020212 /)

对于签名,使用指定X509的"URI"和"valueType"的直接"引用"的"SecurityTokenReference"是强制性的.对于加密,我们也推荐它,但我们也按优先顺序支持对keyIdentifier,X509IssuerSerial或keyName的引用.

加密和签名的块必须是"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>
Run Code Online (Sandbox Code Playgroud)

编辑:我无法用wsit发送预期的消息.例如,使用Netbeans向导,如果不使用寻址,我无法获得加密的标头.这应该是可能的吗?

我用一个旧的轴1类和wss4j攻击了一些东西,它有效,但它很难看,而且我宁愿使用更具前瞻性的东西.

ado*_*uas 1

也许您想尝试使用 CXF 而不是 WSIT?http://cxf.apache.org/docs/ws-security.html