Apache WSS4J无法初始化

时间:2019-06-27 14:49:17

标签: java apache spring-boot security wss4j

我正在尝试使Apache WSS4J库能够在Spring Boot Web服务中验证BinarySecurityToken。我们可以很好地启动服务,但是当我们发送SOAP请求时,会出现以下错误:

No message with ID "invalidSAMLsecurity" found in resource bundle "org/apache/xml/security/resource/xmlsecurity"; nested exception is org.apache.wss4j.common.ext.WSSecurityException: No message with ID "invalidSAMLsecurity" found in resource bundle "org/apache/xml/security/resource/xmlsecurity"

现在,据我所知,这是在您尚未调用WSSec.init()方法时发生的。但是,Apache WSS4J中唯一的WSSec类在org.apache.wss4j.stax软件包中,并且看来使用Maven下载WSS4J 2.2.3不能使您访问stax软件包。

我敢肯定我只是在错误的地方找东西,但是当前的Apache WSS4J API适用于2.3.0-SNAPSHOT,所以我什至不确定我使用的版本是否可以访问那些包,我似乎找不到版本2.2.3的API。

我确信这只是找到正确的初始化的问题,我不确定这些初始化将在哪里配置。

1 个答案:

答案 0 :(得分:0)

要使用标头中的binarySecurityToken验证签名的xml,您需要确保使用

对xml进行签名
  

“ WSHandlerConstants.SIG_KEY_ID” =“ DirectReference”

 List<WSSecurityEngineResult> res = engine.processSecurityHeader(signedDoc, null, null, crypto); 

signedDoc-作为文档的SOAP信封

使用此方法来验证签名。另外,按如下所示设置Crypto实例。

  

Crypto crypto = CryptoFactory.getInstance(“ validator.properties”);

尝试以下Maven依赖关系(这是我所拥有的有效示例)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>2.1.5.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.apache.wss4j</groupId>
        <type>pom</type>
        <artifactId>wss4j</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.wss4j</groupId>
        <artifactId>wss4j-ws-security-dom</artifactId>
        <version>2.0.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.security</groupId>
        <artifactId>wss4j</artifactId>
        <version>1.6.19</version>
    </dependency>

    <dependency>
        <groupId>org.apache.wss4j</groupId>
        <artifactId>wss4j-ws-security-common</artifactId>
        <version>2.0.2</version>
    </dependency>