Skip to content

Commit 3ae3491

Browse files
committed
feat: auth handles multi-cluster case correctly
Signed-off-by: Calum Murray <[email protected]>
1 parent b46abd3 commit 3ae3491

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

pkg/http/authorization.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ import (
2424
type KubernetesApiTokenVerifier interface {
2525
// KubernetesApiVerifyToken TODO: clarify proper implementation
2626
KubernetesApiVerifyToken(ctx context.Context, token, audience, cluster string) (*authenticationapiv1.UserInfo, []string, error)
27+
// GetTargetParameterName returns the parameter name used for target identification in MCP requests
28+
GetTargetParameterName() string
2729
}
2830

29-
// extractClusterFromRequest extracts cluster parameter from MCP request body
30-
func extractClusterFromRequest(r *http.Request) (string, error) {
31+
// extractTargetFromRequest extracts cluster parameter from MCP request body
32+
func extractTargetFromRequest(r *http.Request, targetName string) (string, error) {
3133
if r.Body == nil {
3234
return "", nil
3335
}
@@ -53,8 +55,8 @@ func extractClusterFromRequest(r *http.Request) (string, error) {
5355
return "", nil
5456
}
5557

56-
// Extract cluster parameter
57-
if cluster, ok := mcpRequest.Params.Arguments["cluster"].(string); ok {
58+
// Extract target parameter
59+
if cluster, ok := mcpRequest.Params.Arguments[targetName].(string); ok {
5860
return cluster, nil
5961
}
6062

@@ -166,7 +168,8 @@ func AuthorizationMiddleware(staticConfig *config.StaticConfig, oidcProvider *oi
166168
}
167169
// Kubernetes API Server TokenReview validation
168170
if err == nil && staticConfig.ValidateToken {
169-
cluster, clusterErr := extractClusterFromRequest(r)
171+
targetParameterName := verifier.GetTargetParameterName()
172+
cluster, clusterErr := extractTargetFromRequest(r, targetParameterName)
170173
if clusterErr != nil {
171174
klog.V(2).Infof("Failed to extract cluster from request, using default: %v", clusterErr)
172175
}

0 commit comments

Comments
 (0)