我们正在尝试使用Starter 2.7.8 ( SpringBoot https://github.com/SAP/cloud-security-xsuaa-integration)和SAPJava3.32.0的CloudSDK。
CloudSDK依赖于部分xsuaa (java、java、tokenclient、java test)版本2.7.8,但不使用spring。CloudSDK还依赖于SpringSecurity5.4.1。当我们添加xsuaa-spring-boot-starter时,我们的安全集成测试中断,在运行时,我们在应用程序的"rest“端(rest控制器)遇到令牌验证错误。这似乎是因为xsuaa- Spring启动启动程序依赖于SpringSecurity5.3.4.RELEASE。
我们看到的错误是: java.lang.NoSuchMethodError:'java.util.Map com.nimbusds.jose.Header.toJSONObject()。这是SpringSecurity5.4.1 (https://github.com/spring-projects/spring-security/issues/9120)中的一个已知问题。正如这个问题指出的那样,spring安全性用于springboot 2.4,而不是cloud使用的2.3。
我们一直未能解决这个问题。这可能是不同依赖关系的原因吗?如果是的话,对如何解决这些问题有什么想法吗?
谢谢,
丹尼
发布于 2020-11-10 00:50:59
编辑:在3.33.0
版本中,SDK默认在弹簧原型中提供以下配置。
您的观察是正确的,这是不同的Spring安全版本引入的依赖冲突。
如果您正在使用SDK,则需要在SDK设置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>
目前,Spring原型正在更新,默认情况下将随此配置一起发布,直到Spring 2.4发布。
https://stackoverflow.com/questions/64764311
复制相似问题