【问题标题】:Dependency conflicts between SAP-Cloud-SDK and SAP cloud-security-xsuaa-integrationSAP-Cloud-SDK 和 SAP cloud-security-xsuaa-integration 之间的依赖冲突
【发布时间】:2020-11-10 07:08:16
【问题描述】:

我们正在尝试将 SAP SpringBoot Starter XSUAA 2.7.8 (https://github.com/SAP/cloud-security-xsuaa-integration) 与 SAP CloudSDK for Java 3.32.0 一起使用。

CloudSDK依赖部分xsuaa(java-api, java-security, tokenclient, java-security-test)2.7.8版本,但不使用spring-xsuaa。 CloudSDK 还依赖于 Spring Security 5.4.1。 当我们添加 xsuaa-spring-boot-starter 时,我们的安全集成测试会中断,并且在运行时我们会在应用程序的“rest api”端(rest 控制器)遇到令牌验证错误。似乎是因为 xsuaa-spring-boot-starter 依赖于 Spring Security 5.3.4.RELEASE。

我们收到错误消息:java.lang.NoSuchMethodError: 'java.util.Map com.nimbusds.jose.Header.toJSONObject()。这是 spring security 5.4.1 (https://github.com/spring-projects/spring-security/issues/9120) 的一个已知问题。正如问题所述,spring security 旨在与 springboot 2.4 一起使用,而不是 cloud sdk 使用的 2.3。

我们无法解决此问题。这可能是不同依赖关系的原因吗?如果是这样,关于如何解决这些问题的任何想法?

谢谢,

丹尼

【问题讨论】:

    标签: sap-cloud-platform sap-cloud-sdk


    【解决方案1】:

    编辑:从3.33.0 版本开始,SDK 在Spring Archetype 中默认带有以下配置。


    你的观察是对的,这是Spring不同安全版本引入的依赖冲突。

    如果您使用 SDK BOM,您需要在 SDK BOM 设置之前明确设置 Spring 安全版本:

    <dependencyManagement>
        <dependencies>
            <!-- override spring security from Cloud SDK -->
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-oauth2-jose</artifactId>
                <version>5.3.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-oauth2-resource-server</artifactId>
                <version>5.3.4.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>com.sap.cloud.sdk</groupId>
                <artifactId>sdk-bom</artifactId>
                <version>${sap.cloud.sdk.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sap.cloud.security.xsuaa</groupId>
                <artifactId>xsuaa-spring-boot-starter</artifactId>
                <version>${sap.cloud.security.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    目前 SDK Spring Archetype 正在更新以默认提供此配置,直到 Spring Boot 2.4 发布。

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      相关资源
      最近更新 更多