[
https://issues.apache.org/jira/browse/KNOX-3124?focusedWorklogId=965634&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-965634
]
ASF GitHub Bot logged work on KNOX-3124:
----------------------------------------
Author: ASF GitHub Bot
Created on: 10/Apr/25 16:55
Start Date: 10/Apr/25 16:55
Worklog Time Spent: 10m
Work Description: lmccay opened a new pull request, #1021:
URL: https://github.com/apache/knox/pull/1021
## What changes were proposed in this pull request?
In order to add various security headers to a response, we can add a generic
filter for which init params with the param name and value indicating the
header name and string representing the directives for the header respectively.
This will allow admins to configure things like Content-Security-Policy,
Cache-Control, etc. without the need to add separate filters for each one.
## How was this patch tested?
New unit tests were added.
All new and existing tests were run.
Manual testing was done with the following web app sec provider config and
curl command:
```
<provider>
<role>webappsec</role>
<name>WebAppSec</name>
<enabled>true</enabled>
<param>
<name>csrf.customHeader</name>
<value>X-XSRF-Header</value>
</param>
<param>
<name>csrf.methodsToIgnore</name>
<value>GET,OPTIONS,HEAD</value>
</param>
<param>
<name>xframe.options.enabled</name>
<value>true</value>
</param>
<param>
<name>xss.protection.enabled</name>
<value>true</value>
</param>
<param>
<name>strict.transport.enabled</name>
<value>true</value>
</param>
<param>
<name>xframe.options</name>
<value>SAMEORIGIN</value>
</param>
<param>
<name>security.header.enabled</name>
<value>true</value>
</param>
<param>
<name>security.header.Content-Security-Policy</name>
<value>default-src 'self'</value>
</param>
<param>
<name>security.header.Cache-Control</name>
<value>max-age=604800</value>
</param>
</provider>
```
Note the params with the "security.header." prefix and the headers added to
the resulting output from the curl command below:
```
curl -ivku admin:admin-password -X POST
"https://localhost:8443/gateway/sandbox/clientid/api/v1/oauth/credentials"
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Thu, 10 Apr 2025 12:03:04 GMT
Date: Thu, 10 Apr 2025 12:03:04 GMT
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1;mode=block
X-XSS-Protection: 1;mode=block
< Strict-Transport-Security: max-age=31536000
Strict-Transport-Security: max-age=31536000
**< Cache-Control: max-age=604800
Cache-Control: max-age=604800
< Content-Security-Policy: default-src 'self'
Content-Security-Policy: default-src 'self'**
< pattern: clientid/api/**?**
pattern: clientid/api/**?**
< Set-Cookie: KNOXSESSIONID=node0oggzblclwhrm1u6i6xsx4xn33.node0;
Path=/gateway/sandbox; Secure; HttpOnly
Set-Cookie: KNOXSESSIONID=node0oggzblclwhrm1u6i6xsx4xn33.node0;
Path=/gateway/sandbox; Secure; HttpOnly
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: rememberMe=deleteMe; Path=/gateway/sandbox; Max-Age=0;
Expires=Wed, 09-Apr-2025 12:03:04 GMT; SameSite=lax
Set-Cookie: rememberMe=deleteMe; Path=/gateway/sandbox; Max-Age=0;
Expires=Wed, 09-Apr-2025 12:03:04 GMT; SameSite=lax
< Content-Type: application/json
Content-Type: application/json
< Content-Length: 203
Content-Length: 203
<
```
Issue Time Tracking
-------------------
Worklog Id: (was: 965634)
Remaining Estimate: 0h
Time Spent: 10m
> Add Generic Security Header Filter to WebAppSec Provider
> --------------------------------------------------------
>
> Key: KNOX-3124
> URL: https://issues.apache.org/jira/browse/KNOX-3124
> Project: Apache Knox
> Issue Type: Improvement
> Components: Server
> Reporter: Larry McCay
> Assignee: Larry McCay
> Priority: Major
> Fix For: 2.2.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> In order to add various security headers to a response, we can add a generic
> filter for which init params with the param name and value indicating the
> header name and string representing the directives for the header
> respectively.
> This will allow admins to configure things like Content-Security-Policy,
> Cache-Control, etc. without the need to add separate filters for each one.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)