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.

Kubernetes-commit: 0acdc0cdb369372e06c202aea162bce04410f643
This commit is contained in:
John Millikin 2017-07-19 10:52:03 -07:00 committed by Kubernetes Publisher
parent 6f848a98cb
commit 431caeab63
2 changed files with 16 additions and 1 deletions

View File

@ -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
}

View File

@ -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"},