Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6793 from MihaiIliescu/propagate_http_headers_to_…
…security_connector Propagate http headers to security connector context (related to #5700)
- Loading branch information
Showing
7 changed files
with
100 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
...-plugins/http-helper/src/main/java/org/odpi/openmetadata/http/HttpHeadersThreadLocal.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* SPDX-License-Identifier: Apache-2.0 */ | ||
/* Copyright Contributors to the ODPi Egeria project. */ | ||
package org.odpi.openmetadata.http; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* HttpHeadersThreadLocal keeps ThreadLocal HTTP headers to be available for request thread. | ||
*/ | ||
public class HttpHeadersThreadLocal { | ||
|
||
/** | ||
* HEADERS_THREAD_LOCAL is a ThreadLocal that holds a map of headers and their value | ||
*/ | ||
private static ThreadLocal<Map<String, String>> HEADERS_THREAD_LOCAL = new ThreadLocal<>(); | ||
|
||
public static ThreadLocal<Map<String, String>> getHeadersThreadLocal() { | ||
return HEADERS_THREAD_LOCAL; | ||
} | ||
} |
51 changes: 51 additions & 0 deletions
51
...lugins/http-helper/src/main/java/org/odpi/openmetadata/http/HttpRequestHeadersFilter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* SPDX-License-Identifier: Apache-2.0 */ | ||
/* Copyright Contributors to the ODPi Egeria project. */ | ||
package org.odpi.openmetadata.http; | ||
|
||
import javax.servlet.Filter; | ||
import javax.servlet.FilterChain; | ||
import javax.servlet.FilterConfig; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.ServletRequest; | ||
import javax.servlet.ServletResponse; | ||
import javax.servlet.http.HttpServletRequest; | ||
import java.io.IOException; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
/** | ||
* HttpRequestHeadersFilter is a Java Servlet Filter that receives a list of http header names which are then | ||
* saved from the request in HttpHeadersThreadLocal | ||
*/ | ||
public class HttpRequestHeadersFilter implements Filter { | ||
private List<String> headerNames; | ||
|
||
/** | ||
* @param headerNames list of http header names | ||
*/ | ||
public HttpRequestHeadersFilter(List<String> headerNames) { | ||
this.headerNames = headerNames; | ||
} | ||
|
||
@Override | ||
public void init(FilterConfig filterConfig) throws ServletException { | ||
Filter.super.init(filterConfig); | ||
} | ||
|
||
@Override | ||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) | ||
throws IOException, ServletException { | ||
HttpServletRequest req = (HttpServletRequest) servletRequest; | ||
|
||
Map<String, String> threadLocalHeaders = new HashMap<>(); | ||
|
||
for (String headerName : headerNames) { | ||
String headerValue = req.getHeader(headerName); | ||
threadLocalHeaders.put(headerName, headerValue); | ||
} | ||
|
||
HttpHeadersThreadLocal.getHeadersThreadLocal().set(threadLocalHeaders); | ||
filterChain.doFilter(servletRequest, servletResponse); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters