This is an automated email from the ASF dual-hosted git repository.
abhi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new a6c21a19a RANGER-5499: Refactor to use Filter and fix error in
catalina.out
a6c21a19a is described below
commit a6c21a19aa2522f882301bccce03e6c28701522a
Author: Abhishek Kumar <[email protected]>
AuthorDate: Wed Mar 18 15:12:45 2026 -0700
RANGER-5499: Refactor to use Filter and fix error in catalina.out
---
.../web/filter/RangerHeaderPreAuthFilter.java | 36 ++++++++++++++--------
.../web/filter/TestRangerHeaderPreAuthFilter.java | 8 ++---
2 files changed, 27 insertions(+), 17 deletions(-)
diff --git
a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerHeaderPreAuthFilter.java
b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerHeaderPreAuthFilter.java
index 89bb78750..6672e3c3c 100644
---
a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerHeaderPreAuthFilter.java
+++
b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerHeaderPreAuthFilter.java
@@ -32,9 +32,8 @@
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import
org.springframework.security.web.authentication.WebAuthenticationDetails;
-import org.springframework.web.filter.GenericFilterBean;
-import javax.annotation.PostConstruct;
+import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
@@ -47,12 +46,12 @@
import java.util.Collection;
import java.util.List;
-public class RangerHeaderPreAuthFilter extends GenericFilterBean {
+public class RangerHeaderPreAuthFilter implements Filter {
private static final Logger LOG =
LoggerFactory.getLogger(RangerHeaderPreAuthFilter.class);
- public static final String PROP_HEADER_AUTH_ENABLED =
"ranger.admin.authn.header.enabled";
- public static final String PROP_USERNAME_HEADER_NAME =
"ranger.admin.authn.header.username";
- public static final String PROP_REQUEST_ID_HEADER_NAME =
"ranger.admin.authn.header.requestid";
+ public static final String PROP_HEADER_AUTH_ENABLED =
"ranger.admin.authn.header.enabled";
+ public static final String PROP_USERNAME_HEADER_NAME =
"ranger.admin.authn.header.username";
+ public static final String PROP_REQUEST_ID_HEADER_NAME =
"ranger.admin.authn.header.requestid";
private boolean headerAuthEnabled;
private String userNameHeaderName;
@@ -60,21 +59,32 @@ public class RangerHeaderPreAuthFilter extends
GenericFilterBean {
@Autowired
UserMgr userMgr;
- @PostConstruct
- public void initialize(FilterConfig filterConfig) throws ServletException {
+ public RangerHeaderPreAuthFilter() {
+ loadConfiguration();
+ }
+
+ @Override
+ public void init(FilterConfig config) throws ServletException {
+ loadConfiguration();
+ }
+
+ private void loadConfiguration() {
headerAuthEnabled =
PropertiesUtil.getBooleanProperty(PROP_HEADER_AUTH_ENABLED, false);
userNameHeaderName =
PropertiesUtil.getProperty(PROP_USERNAME_HEADER_NAME);
}
@Override
- public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
- HttpServletRequest httpRequest = (HttpServletRequest) request;
+ public void destroy() {
+ }
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (headerAuthEnabled) {
Authentication existingAuthn =
SecurityContextHolder.getContext().getAuthentication();
if (existingAuthn == null || !existingAuthn.isAuthenticated()) {
- String username =
StringUtils.trimToNull(httpRequest.getHeader(userNameHeaderName));
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ String username =
StringUtils.trimToNull(httpRequest.getHeader(userNameHeaderName));
if (StringUtils.isNotBlank(username)) {
List<GrantedAuthority> grantedAuthorities =
getAuthoritiesFromRanger(username);
@@ -101,8 +111,8 @@ public void doFilter(ServletRequest request,
ServletResponse response, FilterCha
* Loads authorities from Ranger DB
*/
private List<GrantedAuthority> getAuthoritiesFromRanger(String username) {
- List<GrantedAuthority> ret = new ArrayList<>();
- Collection<String> roleList = userMgr.getRolesByLoginId(username);
+ List<GrantedAuthority> ret = new ArrayList<>();
+ Collection<String> roleList = userMgr.getRolesByLoginId(username);
if (roleList != null) {
for (String role : roleList) {
diff --git
a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
index 2ed69a6fb..e90dd6fae 100644
---
a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
+++
b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
@@ -75,7 +75,7 @@ public void testDoFilter_disabled_passesThrough() throws
Exception {
UserMgr userMgr = mock(UserMgr.class);
filter.userMgr = userMgr;
- filter.initialize(null);
+ filter.init(null);
HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);
@@ -97,7 +97,7 @@ public void
testDoFilter_enabled_missingUsername_passesThrough() throws Exceptio
UserMgr userMgr = mock(UserMgr.class);
filter.userMgr = userMgr;
- filter.initialize(null);
+ filter.init(null);
HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);
@@ -121,7 +121,7 @@ public void
testDoFilter_enabled_withUsername_setsAuthenticationFromRangerDbRole
UserMgr userMgr = mock(UserMgr.class);
filter.userMgr = userMgr;
- filter.initialize(null);
+ filter.init(null);
when(userMgr.getRolesByLoginId("joeuser")).thenReturn(Arrays.asList("ROLE_SYS_ADMIN",
"ROLE_USER"));
@@ -160,7 +160,7 @@ public void
testDoFilter_enabled_existingAuthenticatedContext_doesNotOverrideAut
UserMgr userMgr = mock(UserMgr.class);
filter.userMgr = userMgr;
- filter.initialize(null);
+ filter.init(null);
UsernamePasswordAuthenticationToken existingAuth = new
UsernamePasswordAuthenticationToken("existing-user", "pwd",
Collections.singletonList(new SimpleGrantedAuthority("test-role")));