java - Spring boot 上的 Wss4jSecurityInterceptor

标签 java spring maven spring-security

当我尝试在 Spring Boot 配置中连接 Wss4jSecurityInterceptor 时,Eclipse 提示它找不到 Wss4jSecurityInterceptor(它不可用于导入):

@Bean public Wss4jSecurityInterceptor wss4jSecurityInterceptor(){...} 

以下是 pom.xml 文件的相关摘录:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.abc</groupId>
    <artifactId>abc-connectivity-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>abc-connectivity-boot</name>
    <description>FFM Connectivity via Digested UserNameToken</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-ws</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-test</artifactId>
            <version>2.2.1.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> 
            </dependency> -->

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

我错过了什么?

提前谢谢您。 西蒙

spring-ws-security 依赖项添加到 pom.xml 中(按照 M. Deinum 的建议),我现在看到以下运行时错误:

Caused by: java.lang.NoClassDefFoundError: org/apache/ws/security/WSSecurityException
    at connect.ConnectivityTestingConfig.wss4jSecurityInterceptor(ConnectivityTestingConfig.java:68)
    at connect.ConnectivityTestingConfig$$EnhancerBySpringCGLIB$$e29e9046.CGLIB$wss4jSecurityInterceptor$4(<generated>)
    at connect.ConnectivityTestingConfig$$EnhancerBySpringCGLIB$$e29e9046$$FastClassBySpringCGLIB$$bb38be14.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
    at connect.ConnectivityTestingConfig$$EnhancerBySpringCGLIB$$e29e9046.wss4jSecurityInterceptor(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)

添加以下依赖项:

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

似乎解决了上述错误,但这是否是朝着正确的方向迈出的一步?
担忧:

  1. 添加上述内容后,pom.xml 中是否应该存在 spring-boot-starter-security

  2. 如何控制添加的wss4j的版本以及应该控制吗?例如,wss4j-1.5.8.jar 似乎不兼容,而 wss4j-1.6.18 似乎可以工作。如何将 Spring Boot 的版本与其所需的依赖项关联起来?

有人可以评论一下这种方法吗?这是生成的 pom.xml:

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-ws</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-test</artifactId>
        <version>2.2.1.RELEASE</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.security</groupId>
        <artifactId>wss4j</artifactId>
        <version>1.6.18</version>
        <!-- <type>jar</type> -->
        <!-- <scope>compile</scope> -->
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

最佳答案

我最终得到了这个工作配置:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
        <relativePath />
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.7</java.version>
        <audit-lib.version>1.0.0</audit-lib.version>
        <cxf.version>3.1.0</cxf.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-ws</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-test</artifactId>
            <!-- <version>2.2.1.RELEASE</version> -->
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-security</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.fuwt.iws</groupId>
            <artifactId>audit-lib</artifactId>
            <version>${audit-lib.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>

        <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency> -->       



    </dependencies>

关于java - Spring boot 上的 Wss4jSecurityInterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31439053/

相关文章:

java - Spring Security 3.1 + JPA - 空指针异常

java - 无法解释的 Java HashMap 行为

Java - 尝试将空值放入数组

java - java swing应用程序中的服务层

maven - 在Spring Boot应用程序中基于 './mvnw clean install'构建docker镜像时无法运行 “openjdk:8-jdk-alpine”

java - MVC : Best way of watching a directory for changes

Spring Boot 和 Tomcat : Is it better to use embeded Tomcat or external Tomcat installation.

web-services - 无法访问Web服务端点: Spring-WS 2

java - AspectJ @DeclareParents defaultImpl 代码在用作依赖项时不使用

java - Docker-Compose - 控制 docker-compose 执行顺序