Skip to content

Commit f5054ac

Browse files
committed
mcp-server: refactor configurer
Signed-off-by: Daniel Garnier-Moiroux <[email protected]>
1 parent 08f7099 commit f5054ac

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

mcp-server-security/src/main/java/org/springaicommunity/mcp/security/server/apikey/web/ApiKeyAuthenticationFilter.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,15 @@ public ApiKeyAuthenticationFilter(AuthenticationManager authenticationManager) {
4343
this(authenticationManager, new ApiKeyAuthenticationConverter(DEFAULT_API_KEY_HEADER));
4444
}
4545

46-
public ApiKeyAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationConverter authenticationConverter) {
46+
public ApiKeyAuthenticationFilter(AuthenticationManager authenticationManager,
47+
AuthenticationConverter authenticationConverter) {
4748
super(authenticationManager, authenticationConverter);
4849

4950
setSuccessHandler(new PassthroughSuccessHandler());
5051
setFailureHandler(
5152
new AuthenticationEntryPointFailureHandler(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)));
5253
}
5354

54-
public void setApiKeyHeader(String apiKeyHeader) {
55-
setAuthenticationConverter(new ApiKeyAuthenticationConverter(apiKeyHeader));
56-
}
57-
5855
private static class PassthroughSuccessHandler implements AuthenticationSuccessHandler {
5956

6057
@Override

mcp-server-security/src/main/java/org/springaicommunity/mcp/security/server/config/McpApiKeyConfigurer.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.springaicommunity.mcp.security.server.apikey.ApiKeyEntityRepository;
2020
import org.springaicommunity.mcp.security.server.apikey.authentication.ApiKeyAuthenticationProvider;
21+
import org.springaicommunity.mcp.security.server.apikey.web.ApiKeyAuthenticationConverter;
2122
import org.springaicommunity.mcp.security.server.apikey.web.ApiKeyAuthenticationFilter;
2223

2324
import org.springframework.security.authentication.AuthenticationManager;
@@ -26,6 +27,7 @@
2627
import org.springframework.security.web.authentication.AuthenticationConverter;
2728
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
2829
import org.springframework.util.Assert;
30+
import org.springframework.util.StringUtils;
2931

3032
/**
3133
* @author Daniel Garnier-Moiroux
@@ -51,14 +53,21 @@ public void configure(HttpSecurity http) throws Exception {
5153

5254
var authManager = http.getSharedObject(AuthenticationManager.class);
5355

54-
var filter = new ApiKeyAuthenticationFilter(authManager);
55-
if (this.headerName != null) {
56-
filter.setApiKeyHeader(this.headerName);
57-
}
56+
var authenticationConverter = getAuthenticationConverter();
57+
var filter = authenticationConverter != null
58+
? new ApiKeyAuthenticationFilter(authManager, authenticationConverter)
59+
: new ApiKeyAuthenticationFilter(authManager);
60+
http.addFilterBefore(filter, BasicAuthenticationFilter.class);
61+
}
62+
63+
private AuthenticationConverter getAuthenticationConverter() {
5864
if (this.authenticationConverter != null) {
59-
filter.setAuthenticationConverter(this.authenticationConverter);
65+
return this.authenticationConverter;
6066
}
61-
http.addFilterBefore(filter, BasicAuthenticationFilter.class);
67+
if (StringUtils.hasText(this.headerName)) {
68+
return new ApiKeyAuthenticationConverter(this.headerName);
69+
}
70+
return null;
6271
}
6372

6473
/**

0 commit comments

Comments
 (0)