Skip to content

Commit 6da9001

Browse files
authored
feat(auth)!: use generic kubernetes-authorization header
1 parent a9a8161 commit 6da9001

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

pkg/kubernetes/kubernetes.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ import (
1919
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
2020
"k8s.io/klog/v2"
2121
"sigs.k8s.io/yaml"
22+
"strings"
2223
)
2324

2425
const (
25-
AuthorizationHeader = "Kubernetes-Authorization"
26-
AuthorizationBearerTokenHeader = "kubernetes-authorization-bearer-token"
26+
AuthorizationHeader = "kubernetes-authorization"
2727
)
2828

2929
type CloseWatchKubeConfig func() error
@@ -125,13 +125,13 @@ func (k *Kubernetes) ToRESTMapper() (meta.RESTMapper, error) {
125125
}
126126

127127
func (k *Kubernetes) Derived(ctx context.Context) *Kubernetes {
128-
bearerToken, ok := ctx.Value(AuthorizationBearerTokenHeader).(string)
129-
if !ok {
128+
authorization, ok := ctx.Value(AuthorizationHeader).(string)
129+
if !ok || !strings.HasPrefix(authorization, "Bearer ") {
130130
return k
131131
}
132-
klog.V(5).Infof("%s header found, using provided bearer token", AuthorizationBearerTokenHeader)
132+
klog.V(5).Infof("%s header found (Bearer), using provided bearer token", AuthorizationHeader)
133133
derivedCfg := rest.CopyConfig(k.cfg)
134-
derivedCfg.BearerToken = bearerToken
134+
derivedCfg.BearerToken = strings.TrimPrefix(authorization, "Bearer ")
135135
derivedCfg.BearerTokenFile = ""
136136
derivedCfg.Username = ""
137137
derivedCfg.Password = ""

pkg/mcp/mcp.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,5 @@ func NewTextResult(content string, err error) *mcp.CallToolResult {
109109
}
110110

111111
func contextFunc(ctx context.Context, r *http.Request) context.Context {
112-
//return context.WithValue(ctx, kubernetes.AuthorizationHeader, r.Header.Get(kubernetes.AuthorizationHeader))
113-
return context.WithValue(ctx, kubernetes.AuthorizationBearerTokenHeader, r.Header.Get(kubernetes.AuthorizationBearerTokenHeader))
112+
return context.WithValue(ctx, kubernetes.AuthorizationHeader, r.Header.Get(kubernetes.AuthorizationHeader))
114113
}

pkg/mcp/mcp_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func TestSseHeaders(t *testing.T) {
9696
defer mockServer.Close()
9797
before := func(c *mcpContext) {
9898
c.withKubeConfig(mockServer.config)
99-
c.clientOptions = append(c.clientOptions, client.WithHeaders(map[string]string{"kubernetes-authorization-bearer-token": "a-token-from-mcp-client"}))
99+
c.clientOptions = append(c.clientOptions, client.WithHeaders(map[string]string{"kubernetes-authorization": "Bearer a-token-from-mcp-client"}))
100100
}
101101
pathHeaders := make(map[string]http.Header, 0)
102102
mockServer.Handle(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {

0 commit comments

Comments
 (0)