Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yoranvanoirschot/1b3c91df4f60b9d8522162fbee5ef4e3 to your computer and use it in GitHub Desktop.
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
spring:
cloud:
azure:
active-directory:
b2c:
enabled: false
fix-enabled: true
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