Skip to content

Commit 08f7099

Browse files
committed
mcp-server: api key converter rejects blank header names
Signed-off-by: Daniel Garnier-Moiroux <[email protected]>
1 parent 636709b commit 08f7099

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,23 @@
3535
*/
3636
public class ApiKeyAuthenticationConverter implements AuthenticationConverter {
3737

38-
private final String apiKeyHeader;
38+
private final String apiKeyHeaderName;
3939

40-
public ApiKeyAuthenticationConverter(String apiKeyHeader) {
41-
Assert.notNull(apiKeyHeader, "apiKeyHeader cannot be null");
42-
this.apiKeyHeader = apiKeyHeader;
40+
public ApiKeyAuthenticationConverter(String apiKeyHeaderName) {
41+
Assert.hasText(apiKeyHeaderName, "apiKeyHeaderName cannot be blank");
42+
this.apiKeyHeaderName = apiKeyHeaderName;
4343
}
4444

4545
@Override
4646
@Nullable
4747
public Authentication convert(HttpServletRequest request) {
48-
var apiKeyValues = Collections.list(request.getHeaders(this.apiKeyHeader));
48+
var apiKeyValues = Collections.list(request.getHeaders(this.apiKeyHeaderName));
4949
if (apiKeyValues.isEmpty()) {
5050
return null;
5151
}
5252
if (apiKeyValues.size() > 1) {
5353
throw new BadCredentialsException(
54-
"%s must have a single value, found %s".formatted(this.apiKeyHeader, apiKeyValues.size()));
54+
"%s must have a single value, found %s".formatted(this.apiKeyHeaderName, apiKeyValues.size()));
5555
}
5656
String apiKey = apiKeyValues.get(0);
5757

mcp-server-security/src/test/java/org/springaicommunity/mcp/security/server/apikey/web/ApiKeyAuthenticationConverterTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,10 @@ void convertWhenMultipleApiKeysThrows() {
6262
.hasMessage("x-custom-header must have a single value, found 2");
6363
}
6464

65+
@Test
66+
void constructorWhenHeaderBlankThenThrows() {
67+
assertThatThrownBy(() -> new ApiKeyAuthenticationConverter("")).isInstanceOf(IllegalArgumentException.class)
68+
.hasMessage("apiKeyHeaderName cannot be blank");
69+
}
70+
6571
}

0 commit comments

Comments
 (0)