[ 
https://issues.apache.org/jira/browse/KAFKA-21113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ashwin Pankaj reassigned KAFKA-21113:
-------------------------------------

    Assignee: Ashwin Pankaj

> Connect admin listener does not apply response.http.headers.config
> ------------------------------------------------------------------
>
>                 Key: KAFKA-21113
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21113
>             Project: Kafka
>          Issue Type: Bug
>          Components: connect
>            Reporter: Ashwin Pankaj
>            Assignee: Ashwin Pankaj
>            Priority: Minor
>
> RestServer.initializeResources() builds a separate ServletContextHandler 
> adminContext whenever admin.listeners is configured to a value distinct from 
> listeners. However, configureHttpResponseHeaderFilter(...), which applies 
> response.http.headers.config, is only ever called on the regular context:
> {{String headerConfig = config.responseHeaders();}}
> {{if (!Utils.isBlank(headerConfig)) {}}
> {{    configureHttpResponseHeaderFilter(context, headerConfig);}}
> {{}}}
> response.http.headers.config is commonly used to set security-hardening 
> response headers — the existing test suite 
> (ConnectRestServerTest.testValidCustomizedHttpResponseHeaders) itself uses 
> X-XSS-Protection and Cache-Control as examples, and X-Frame-Options is 
> referenced elsewhere in the same test file. When a distinct admin.listeners 
> is configured, none of these configured headers are applied to admin endpoint 
> responses (e.g. /admin/loggers) — only to the regular listener.
> This is the same class of bug already fixed for REST extension registration 
> in apache/kafka#23150 ("Refactor REST extension registration"), which added a 
> configureExtensions(resourceConfig, adminResourceConfig) hook because 
> registerRestExtensions had the identical "regular-only, admin left out" gap. 
> configureHttpResponseHeaderFilter was missed in that pass.
> Proposed fix: call configureHttpResponseHeaderFilter(adminContext, 
> headerConfig) too, guarded on adminContext != null (mirroring the guard 
> already used for adminContext.start() and extension registration in the same 
> method). Add test coverage asserting the configured headers are present on 
> server.adminUrl() responses when a distinct admin listener is configured.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to