Skip to content

Commit 5595829

Browse files
Annotations: Quote auth proxy headers. (#13708)
Co-authored-by: Jan-Otto Kröpke <[email protected]>
1 parent 2599947 commit 5595829

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

internal/ingress/controller/template/template.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,8 +619,9 @@ func buildAuthProxySetHeaders(headers map[string]string) []string {
619619
}
620620

621621
for name, value := range headers {
622-
res = append(res, fmt.Sprintf("proxy_set_header '%v' '%v';", name, value))
622+
res = append(res, fmt.Sprintf("proxy_set_header %q %q;", name, value))
623623
}
624+
624625
sort.Strings(res)
625626
return res
626627
}

internal/ingress/controller/template/template_test.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -548,12 +548,25 @@ func TestBuildAuthResponseLua(t *testing.T) {
548548

549549
func TestBuildAuthProxySetHeaders(t *testing.T) {
550550
proxySetHeaders := map[string]string{
551-
"header1": "value1",
552-
"header2": "value2",
551+
"Content-Security-Policy": "default-src 'self'; img-src 'self' example.com",
552+
"Content-Type": "application/json; charset=\"utf-8\"",
553+
"header1": "value1",
554+
"header2": "value2",
555+
"Link": "<https://example.com>; rel=\"preload\"; as=\"script\"; crossorigin=\"anonymous\"",
556+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
557+
"new\rline": "value1",
558+
"newline2": "valu\ne2",
553559
}
560+
554561
expected := []string{
555-
"proxy_set_header 'header1' 'value1';",
556-
"proxy_set_header 'header2' 'value2';",
562+
`proxy_set_header "Content-Security-Policy" "default-src 'self'; img-src 'self' example.com";`,
563+
`proxy_set_header "Content-Type" "application/json; charset=\"utf-8\"";`,
564+
`proxy_set_header "Link" "<https://example.com>; rel=\"preload\"; as=\"script\"; crossorigin=\"anonymous\"";`,
565+
`proxy_set_header "User-Agent" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";`,
566+
`proxy_set_header "header1" "value1";`,
567+
`proxy_set_header "header2" "value2";`,
568+
`proxy_set_header "new\rline" "value1";`,
569+
`proxy_set_header "newline2" "valu\ne2";`,
557570
}
558571

559572
headers := buildAuthProxySetHeaders(proxySetHeaders)

test/e2e/annotations/auth.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ var _ = framework.DescribeAnnotation("auth-*", func() {
308308
})
309309
})
310310

311-
ginkgo.It(`should set "proxy_set_header 'My-Custom-Header' '42';" when auth-headers are set`, func() {
311+
ginkgo.It(`should set "proxy_set_header "My-Custom-Header" "42";" when auth-headers are set`, func() {
312312
host := authHost
313313

314314
annotations := map[string]string{
@@ -325,7 +325,7 @@ var _ = framework.DescribeAnnotation("auth-*", func() {
325325

326326
f.WaitForNginxServer(host,
327327
func(server string) bool {
328-
return strings.Contains(server, `proxy_set_header 'My-Custom-Header' '42';`)
328+
return strings.Contains(server, `proxy_set_header "My-Custom-Header" "42";`)
329329
})
330330
})
331331

0 commit comments

Comments
 (0)