Created
October 19, 2023 14:28
-
-
Save yoranvanoirschot/1b3c91df4f60b9d8522162fbee5ef4e3 to your computer and use it in GitHub Desktop.
Workaround for RestTemplate circular reference error with Spring Data Rest and Azure B2C authentication on Spring Boot 3.X
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
spring: | |
cloud: | |
azure: | |
active-directory: | |
b2c: | |
enabled: false | |
fix-enabled: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; | |
import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.conditions.AadB2cConditions; | |
import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; | |
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | |
import org.springframework.boot.web.client.RestTemplateBuilder; | |
import org.springframework.context.annotation.*; | |
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter; | |
// Workaround because higher versions are not compatible with spring-data-rest: https://github.com/Azure/azure-sdk-for-java/issues/31497 | |
@Configuration( | |
proxyBeanMethods = false | |
) | |
@ConditionalOnProperty( | |
value = {"spring.cloud.azure.active-directory.b2c.fix-enabled"}, | |
havingValue = "true" | |
) | |
@Conditional({AadB2cConditions.ClientRegistrationCondition.class}) | |
@Import({AadB2cPropertiesConfiguration.class}) | |
@ConditionalOnClass({OAuth2LoginAuthenticationFilter.class}) | |
public class FixAadB2cOAuth2ClientConfiguration { | |
private RestTemplateBuilder restTemplateBuilder; | |
@Autowired | |
public void setRestTemplateBuilder(RestTemplateBuilder restTemplateBuilder) { | |
this.restTemplateBuilder = restTemplateBuilder; | |
} | |
@Bean | |
public AadB2cOAuth2ClientConfiguration getAadB2cOAuth2ClientConfiguration(AadB2cProperties properties) throws Exception { | |
return new AadB2cOAuth2ClientConfiguration(properties, restTemplateBuilder); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment