K8s: Pass ID token in X-Extra-id-token header (#82893)

This commit is contained in:
Todd Treece 2024-02-16 10:07:37 -05:00 committed by GitHub
parent ffb9a4de4a
commit 8f0431ba46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 4 deletions

View File

@ -25,15 +25,18 @@ func signedInUserAuthenticator(req *http.Request) (*authenticator.Response, bool
Name: signedInUser.Login,
UID: signedInUser.UserUID,
Groups: []string{},
Extra: map[string][]string{},
// In order to faithfully round-trip through an impersonation flow, Extra keys MUST be lowercase.
// see: https://pkg.go.dev/k8s.io/apiserver@v0.27.1/pkg/authentication/user#Info
Extra: map[string][]string{},
}
for _, v := range signedInUser.Teams {
userInfo.Groups = append(userInfo.Groups, strconv.FormatInt(v, 10))
}
//
if signedInUser.IDToken != "" {
userInfo.Extra["ID-Token"] = []string{signedInUser.IDToken}
userInfo.Extra["id-token"] = []string{signedInUser.IDToken}
}
return &authenticator.Response{

View File

@ -47,7 +47,7 @@ func TestSignedInUser(t *testing.T) {
require.Equal(t, u.Login, res.User.GetName())
require.Equal(t, u.UserUID, res.User.GetUID())
require.Equal(t, []string{"1", "2"}, res.User.GetGroups())
require.Empty(t, res.User.GetExtra()["ID-Token"])
require.Empty(t, res.User.GetExtra()["id-token"])
})
t.Run("should set ID token when available", func(t *testing.T) {
@ -72,7 +72,7 @@ func TestSignedInUser(t *testing.T) {
require.Equal(t, u.Login, res.User.GetName())
require.Equal(t, u.UserUID, res.User.GetUID())
require.Equal(t, []string{"1", "2"}, res.User.GetGroups())
require.Equal(t, "test-id-token", res.User.GetExtra()["ID-Token"][0])
require.Equal(t, "test-id-token", res.User.GetExtra()["id-token"][0])
})
}