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.
pull/6/head
John Millikin 2017-07-19 10:52:03 -07:00
parent 6af05149aa
commit 0acdc0cdb3
No known key found for this signature in database
GPG Key ID: 1F7686B8DA217791
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"},