Conflitos de dependência entre SAP-Cloud-SDK e SAP cloud-security-xsuaa-integration

Nov 10 2020

Estamos tentando usar SAP SpringBoot Starter XSUAA 2.7.8 (https://github.com/SAP/cloud-security-xsuaa-integration) junto com o SAP CloudSDK for Java 3.32.0.

O CloudSDK depende de parte do xsuaa (java-api, java-security, tokenclient, java-security-test) versão 2.7.8, mas não usa spring-xsuaa. O CloudSDK também depende do Spring Security 5.4.1. Quando adicionamos xsuaa-spring-boot-starter, nossos testes de integração de segurança são interrompidos e, em tempo de execução, encontramos erros de validação de tokens no lado "api rest" (controladores restantes) de nosso aplicativo. Parece ser devido ao fato de que xsuaa-spring-boot-starter depende do Spring Security 5.3.4.RELEASE.

Recebemos erros dizendo: java.lang.NoSuchMethodError: 'java.util.Map com.nimbusds.jose.Header.toJSONObject (). Este é um problema conhecido com o Spring Security 5.4.1 (https://github.com/spring-projects/spring-security/issues/9120) Como afirma o problema, a segurança do Spring deve ser usada com o springboot 2.4 e não 2.3, que é usado pelo Cloud SDK.

Não conseguimos resolver este problema. Isso pode ser a causa de dependências diferentes? Em caso afirmativo, alguma ideia sobre como resolvê-los?

Obrigado,

Danny

Respostas

1 MatKuhr Nov 10 2020 at 15:50

Editar: a partir da versão, 3.33.0o SDK vem com a configuração abaixo por padrão no Spring Archetype .


Sua observação está correta, este é um conflito de dependência introduzido pelas diferentes versões de segurança do Spring.

Caso você esteja usando o SDK BOM, é necessário definir explicitamente a versão de segurança do Spring antes que ela seja definida pelo SDK BOM:

<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>

Atualmente, o SDK Spring Archetype está sendo atualizado para ser fornecido com esta configuração por padrão até o Spring Boot 2.4 ser lançado.