Skip to content

Commit 345ad78

Browse files
authored
Merge pull request #405 from jrafanie/appliance-add-csp-for-oidc-login
Add CSP for oidc_login - allow unsafe-inline
2 parents 3de9381 + 4a160e4 commit 345ad78

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

COPY/etc/httpd/conf.d/manageiq-https-application.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ SSLCertificateKeyFile /var/www/miq/vmdb/certs/server.cer.key
2828
Header unset ETag
2929
# Explicit HSTS needed: Location blocks using "Header set" don't inherit "Header always set" from VirtualHost
3030
Header always set Strict-Transport-Security "max-age=631138519"
31-
# CSP for static assets: includes directives that differ from default-src 'self' and
32-
# directives that do not fall back to default-src (base-uri, form-action, frame-ancestors)
31+
# CSP for static assets: strict policy since these are pre-compiled external files
32+
# No unsafe-inline needed - all scripts/styles are external resources
3333
Header set Content-Security-Policy "default-src 'self'; base-uri 'self'; child-src 'self'; form-action 'self'; frame-ancestors 'self'; frame-src 'self'; worker-src 'self'; font-src 'self' fonts.gstatic.com fonts.googleapis.com; img-src 'self' data:; style-src 'self' fonts.googleapis.com fonts.gstatic.com; report-uri /dashboard/csp_report; report-to csp-endpoint"
3434
Header set Report-To "{\"group\":\"csp-endpoint\",\"max_age\":10886400,\"endpoints\":[{\"url\":\"/dashboard/csp_report\"}]}"
3535
Header set X-Content-Type-Options "nosniff"

TEMPLATE/etc/httpd/conf.d/manageiq-external-auth-openidc.conf.erb

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,30 @@ OIDCOAuthIntrospectionEndpoint <%= oidc_introspection_endpoint %>
1616
OIDCOAuthIntrospectionEndpointAuth client_secret_basic
1717
OIDCCookieSameSite On
1818

19+
# CSP for OIDC authentication redirects - allows inline styles/scripts needed by auth flow
1920
<Location /oidc_login>
20-
AuthType openid-connect
21-
Require valid-user
22-
FileETag None
23-
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
24-
Header Set Pragma "no-cache"
25-
Header Unset ETag
21+
AuthType openid-connect
22+
Require valid-user
23+
FileETag None
24+
Header always set Strict-Transport-Security "max-age=631138519"
25+
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; report-uri /dashboard/csp_report; report-to csp-endpoint"
26+
Header set Report-To "{\"group\":\"csp-endpoint\",\"max_age\":10886400,\"endpoints\":[{\"url\":\"/dashboard/csp_report\"}]}"
27+
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
28+
Header Set Pragma "no-cache"
29+
Header Unset ETag
2630
</Location>
2731

2832
<Location /ui/service/oidc_login>
29-
AuthType openid-connect
30-
Require valid-user
31-
FileETag None
32-
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
33-
Header Set Pragma "no-cache"
34-
Header Set Set-Cookie "miq_oidc_access_token=%{OIDC_access_token}e; Max-Age=10; Path=/ui/service"
35-
Header Unset ETag
33+
AuthType openid-connect
34+
Require valid-user
35+
FileETag None
36+
Header always set Strict-Transport-Security "max-age=631138519"
37+
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; report-uri /dashboard/csp_report; report-to csp-endpoint"
38+
Header set Report-To "{\"group\":\"csp-endpoint\",\"max_age\":10886400,\"endpoints\":[{\"url\":\"/dashboard/csp_report\"}]}"
39+
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
40+
Header Set Pragma "no-cache"
41+
Header Set Set-Cookie "miq_oidc_access_token=%{OIDC_access_token}e; Max-Age=10; Path=/ui/service"
42+
Header Unset ETag
3643
</Location>
3744

3845
<LocationMatch ^/api(?!\/(v[\d\.]+\/)?product_info$)>

0 commit comments

Comments
 (0)