Skip to content

Commit cef4484

Browse files
ehelmsclaude
andcommitted
Use dashes in HTTP header names in SSL vhost config
Some backends reject headers with underscores before converting dashes to underscores for application processing. Use dashes in RequestHeader names to match the HTTP vhost and ensure headers pass through the full proxy chain. Add a test to catch underscore usage in httpd config headers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2484ef9 commit cef4484

5 files changed

Lines changed: 13 additions & 9 deletions

File tree

src/roles/httpd/templates/external_auth.conf.j2

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
LookupUserGroupsIter REMOTE_USER_GROUP
1616

1717
# Set headers for proxy requests
18-
RequestHeader set REMOTE_USER %{REMOTE_USER}e
19-
RequestHeader set REMOTE_USER_EMAIL %{REMOTE_USER_EMAIL}e
20-
RequestHeader set REMOTE_USER_FIRSTNAME %{REMOTE_USER_FIRSTNAME}e
21-
RequestHeader set REMOTE_USER_LASTNAME %{REMOTE_USER_LASTNAME}e
22-
RequestHeader set REMOTE_USER_GROUPS %{REMOTE_USER_GROUPS}e
18+
RequestHeader set REMOTE-USER %{REMOTE_USER}e
19+
RequestHeader set REMOTE-USER-EMAIL %{REMOTE_USER_EMAIL}e
20+
RequestHeader set REMOTE-USER-FIRSTNAME %{REMOTE_USER_FIRSTNAME}e
21+
RequestHeader set REMOTE-USER-LASTNAME %{REMOTE_USER_LASTNAME}e
22+
RequestHeader set REMOTE-USER-GROUPS %{REMOTE_USER_GROUPS}e
2323
</LocationMatch>
2424

2525
# GSSAPI/Kerberos authentication for web UI

src/roles/httpd/templates/foreman-ssl-vhost.conf.j2

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
## Request header rules
1313
## as per http://httpd.apache.org/docs/2.4/mod/mod_headers.html#requestheader
14-
RequestHeader set X_FORWARDED_PROTO "https"
15-
RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
16-
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
17-
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
14+
RequestHeader set X-FORWARDED-PROTO "https"
15+
RequestHeader set SSL-CLIENT-S-DN "%{SSL_CLIENT_S_DN}s"
16+
RequestHeader set SSL-CLIENT-CERT "%{SSL_CLIENT_CERT}s"
17+
RequestHeader set SSL-CLIENT-VERIFY "%{SSL_CLIENT_VERIFY}s"
1818
RequestHeader unset REMOTE-USER
1919
RequestHeader unset REMOTE_USER
2020
RequestHeader unset REMOTE-USER-EMAIL

tests/fixtures/help/features.txt

Whitespace-only changes.

tests/fixtures/help/migrate.txt

Whitespace-only changes.

tests/httpd_test.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,7 @@ def test_httpd_event_conf_contains_threads_per_child(server):
104104
def test_httpd_config_syntax(server):
105105
cmd = server.run("httpd -t")
106106
assert cmd.succeeded
107+
108+
def test_httpd_headers_use_dashes(server):
109+
cmd = server.run("grep -rPn 'RequestHeader\\s+set\\s+\\S*_\\S*\\s' /etc/httpd/conf.d/foreman.conf /etc/httpd/conf.d/foreman-ssl.conf /etc/httpd/conf.d/05-foreman.d/ /etc/httpd/conf.d/05-foreman-ssl.d/ 2>/dev/null")
110+
assert cmd.stdout.strip() == '', f"HTTP header names should use dashes, not underscores:\n{cmd.stdout}"

0 commit comments

Comments
 (0)