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:
parent
6f848a98cb
commit
431caeab63
|
@ -145,7 +145,8 @@ func headerValue(h http.Header, headerNames []string) string {
|
||||||
func allHeaderValues(h http.Header, headerNames []string) []string {
|
func allHeaderValues(h http.Header, headerNames []string) []string {
|
||||||
ret := []string{}
|
ret := []string{}
|
||||||
for _, headerName := range headerNames {
|
for _, headerName := range headerNames {
|
||||||
values, ok := h[headerName]
|
headerKey := http.CanonicalHeaderKey(headerName)
|
||||||
|
values, ok := h[headerKey]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,6 +111,20 @@ func TestRequestHeader(t *testing.T) {
|
||||||
},
|
},
|
||||||
expectedOk: true,
|
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": {
|
"extra prefix matches case-insensitive": {
|
||||||
nameHeaders: []string{"X-Remote-User"},
|
nameHeaders: []string{"X-Remote-User"},
|
||||||
|
|
Loading…
Reference in New Issue