【问题标题】:java - Apache CXF add signing certificate as BinarySecurityToken into WS-security headerjava - Apache CXF 将签名证书作为 BinarySecurityToken 添加到 WS-security 标头中
【发布时间】:2016-03-17 21:27:30
【问题描述】:

我正在使用 WSDL,我需要在发出 SOAP 请求时使用我的客户端证书对时间戳和 SOAP 正文进行签名。

我的签名证书必须在消息中表示为 BinarySecurityToken 并包含在 SOAP 标头中,如下所示:

<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" soap:mustUnderstand="true">
        <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs
.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-15730854BE4465A46D14538884282111">MIIFO.......56Q==</wss
e:BinarySecurityToken>
        <wsu:Timestamp wsu:Id="TS-1">
            <wsu:Created>2016-03-16T09:53:48.201Z</wsu:Created>
            <wsu:Expires>2016-03-16T09:58:48.201Z</wsu:Expires>
        </wsu:Timestamp>
        .......

我正在使用 WSS4JOutInterceptor 自定义我的请求,但找不到如何将我的签名证书包含到请求中的方法:

// for outgoing messages: Signature and Timestamp validation
        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.TIMESTAMP);
        outProps.put(WSHandlerConstants.USER, "sss");
        outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientKeystorePasswordCallbackHandler.class.getName());
        outProps.put(WSHandlerConstants.SIG_PROP_FILE, "client_sec.properties");
        outProps.put(WSHandlerConstants.SIG_KEY_ID, "X509KeyIdentifier");
        outProps.put(WSHandlerConstants.SIGNATURE_PARTS, "{}{http://schemas.xmlsoap.org/soap/envelope/}Body;{}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp}");

谁能建议我怎么做?

【问题讨论】:

  • 据我所知,您应该将 SIG_KEY_ID 的值更改为 outProps.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");

标签: java wsdl cxf ws-security


【解决方案1】:

好的,这里作为要求的答案。 :-)

正如我的评论中提到的,您应该将 SIG_KEY_ID 的值更改为 outProps.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多