From 0acdc0cdb369372e06c202aea162bce04410f643 Mon Sep 17 00:00:00 2001 From: John Millikin Date: Wed, 19 Jul 2017 10:52:03 -0700 Subject: [PATCH] Use case-insensitive header keys for `--requestheader-group-headers`. This flag is documented as being case-insensitive, but the code was doing a case-sensitive map lookup. --- .../request/headerrequest/requestheader.go | 3 ++- .../request/headerrequest/requestheader_test.go | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader.go b/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader.go index 3c34db62224..38f132b583f 100644 --- a/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader.go +++ b/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader.go @@ -145,7 +145,8 @@ func headerValue(h http.Header, headerNames []string) string { func allHeaderValues(h http.Header, headerNames []string) []string { ret := []string{} for _, headerName := range headerNames { - values, ok := h[headerName] + headerKey := http.CanonicalHeaderKey(headerName) + values, ok := h[headerKey] if !ok { continue } diff --git a/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader_test.go b/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader_test.go index 33e5afcacad..d81d4ee64a8 100644 --- a/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader_test.go +++ b/staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader_test.go @@ -111,6 +111,20 @@ func TestRequestHeader(t *testing.T) { }, expectedOk: true, }, + "groups case-insensitive": { + nameHeaders: []string{"X-REMOTE-User"}, + groupHeaders: []string{"X-REMOTE-Group"}, + requestHeaders: http.Header{ + "X-Remote-User": {"Bob"}, + "X-Remote-Group": {"Users"}, + }, + expectedUser: &user.DefaultInfo{ + Name: "Bob", + Groups: []string{"Users"}, + Extra: map[string][]string{}, + }, + expectedOk: true, + }, "extra prefix matches case-insensitive": { nameHeaders: []string{"X-Remote-User"},