Skip to content

Commit a7648e1

Browse files
committed
authorization-server: expose the underlying oauth2 auth server configurer
Signed-off-by: Daniel Garnier-Moiroux <[email protected]>
1 parent 2e8f074 commit a7648e1

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

mcp-authorization-server/src/main/java/org/springaicommunity/mcp/security/authorizationserver/config/McpAuthorizationServerConfigurer.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@
2727
import org.springframework.context.ApplicationContext;
2828
import org.springframework.core.ResolvableType;
2929
import org.springframework.http.HttpStatus;
30+
import org.springframework.security.config.Customizer;
3031
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3132
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
3233
import org.springframework.security.oauth2.core.OAuth2Token;
3334
import org.springframework.security.oauth2.jwt.NimbusJwtEncoder;
3435
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationServerMetadata;
36+
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
3537
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2ClientRegistrationEndpointConfigurer;
3638
import org.springframework.security.oauth2.server.authorization.context.AuthorizationServerContext;
3739
import org.springframework.security.oauth2.server.authorization.context.AuthorizationServerContextHolder;
@@ -42,29 +44,47 @@
4244
import org.springframework.security.oauth2.server.authorization.token.ResourceIdentifierAudienceTokenCustomizer;
4345
import org.springframework.security.web.authentication.HttpStatusEntryPoint;
4446
import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher;
47+
import org.springframework.util.Assert;
4548
import org.springframework.util.StringUtils;
4649
import org.springframework.web.util.UriComponentsBuilder;
4750
import static org.springframework.security.config.Customizer.withDefaults;
48-
import static org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer.authorizationServer;
4951

5052
/**
5153
* @author Daniel Garnier-Moiroux
5254
*/
5355
public class McpAuthorizationServerConfigurer
5456
extends AbstractHttpConfigurer<McpAuthorizationServerConfigurer, HttpSecurity> {
5557

58+
private Customizer<OAuth2AuthorizationServerConfigurer> authServerCustomizer = Customizer.withDefaults();
59+
5660
public static McpAuthorizationServerConfigurer mcpAuthorizationServer() {
5761
return new McpAuthorizationServerConfigurer();
5862
}
5963

64+
/**
65+
* Customize the underlying Spring Security OAuth2 Authorization Server configuration,
66+
* through a {@link OAuth2AuthorizationServerConfigurer}.
67+
* @param oauth2AuthorizationServerConfigurerCustomizer a customizer of OAuth2
68+
* Authorization Server. Defaults to a no-op {@link Customizer#withDefaults()}.
69+
* @return The {@link McpAuthorizationServerConfigurer} for further configuration.
70+
*/
71+
public McpAuthorizationServerConfigurer authorizationServer(
72+
Customizer<OAuth2AuthorizationServerConfigurer> oauth2AuthorizationServerConfigurerCustomizer) {
73+
Assert.notNull(oauth2AuthorizationServerConfigurerCustomizer,
74+
"oauth2AuthorizationServerConfigurerCustomizer cannot be null");
75+
this.authServerCustomizer = oauth2AuthorizationServerConfigurerCustomizer;
76+
return this;
77+
}
78+
6079
@Override
6180
public void init(HttpSecurity http) throws Exception {
62-
http.with(authorizationServer(), authServer -> {
81+
http.with(OAuth2AuthorizationServerConfigurer.authorizationServer(), authServer -> {
6382
authServer.authorizationServerMetadataEndpoint(
6483
authorizationServerMetadataEndpoint -> authorizationServerMetadataEndpoint
6584
.authorizationServerMetadataCustomizer(authorizationServerMetadataCustomizer()));
6685
OAuth2TokenGenerator<?> tokenGenerator = getTokenGenerator(http);
6786
authServer.tokenGenerator(tokenGenerator);
87+
this.authServerCustomizer.customize(authServer);
6888
});
6989
http.with(new OAuth2ClientRegistrationEndpointConfigurer(), withDefaults());
7090
http.csrf(csrf -> csrf.ignoringRequestMatchers(

0 commit comments

Comments
 (0)