Skip to content

Commit a6c21a1

Browse files
committed
RANGER-5499: Refactor to use Filter and fix error in catalina.out
1 parent 2345c1d commit a6c21a1

2 files changed

Lines changed: 27 additions & 17 deletions

File tree

security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerHeaderPreAuthFilter.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
import org.springframework.security.core.userdetails.User;
3333
import org.springframework.security.core.userdetails.UserDetails;
3434
import org.springframework.security.web.authentication.WebAuthenticationDetails;
35-
import org.springframework.web.filter.GenericFilterBean;
3635

37-
import javax.annotation.PostConstruct;
36+
import javax.servlet.Filter;
3837
import javax.servlet.FilterChain;
3938
import javax.servlet.FilterConfig;
4039
import javax.servlet.ServletException;
@@ -47,34 +46,45 @@
4746
import java.util.Collection;
4847
import java.util.List;
4948

50-
public class RangerHeaderPreAuthFilter extends GenericFilterBean {
49+
public class RangerHeaderPreAuthFilter implements Filter {
5150
private static final Logger LOG = LoggerFactory.getLogger(RangerHeaderPreAuthFilter.class);
5251

53-
public static final String PROP_HEADER_AUTH_ENABLED = "ranger.admin.authn.header.enabled";
54-
public static final String PROP_USERNAME_HEADER_NAME = "ranger.admin.authn.header.username";
55-
public static final String PROP_REQUEST_ID_HEADER_NAME = "ranger.admin.authn.header.requestid";
52+
public static final String PROP_HEADER_AUTH_ENABLED = "ranger.admin.authn.header.enabled";
53+
public static final String PROP_USERNAME_HEADER_NAME = "ranger.admin.authn.header.username";
54+
public static final String PROP_REQUEST_ID_HEADER_NAME = "ranger.admin.authn.header.requestid";
5655

5756
private boolean headerAuthEnabled;
5857
private String userNameHeaderName;
5958

6059
@Autowired
6160
UserMgr userMgr;
6261

63-
@PostConstruct
64-
public void initialize(FilterConfig filterConfig) throws ServletException {
62+
public RangerHeaderPreAuthFilter() {
63+
loadConfiguration();
64+
}
65+
66+
@Override
67+
public void init(FilterConfig config) throws ServletException {
68+
loadConfiguration();
69+
}
70+
71+
private void loadConfiguration() {
6572
headerAuthEnabled = PropertiesUtil.getBooleanProperty(PROP_HEADER_AUTH_ENABLED, false);
6673
userNameHeaderName = PropertiesUtil.getProperty(PROP_USERNAME_HEADER_NAME);
6774
}
6875

6976
@Override
70-
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
71-
HttpServletRequest httpRequest = (HttpServletRequest) request;
77+
public void destroy() {
78+
}
7279

80+
@Override
81+
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
7382
if (headerAuthEnabled) {
7483
Authentication existingAuthn = SecurityContextHolder.getContext().getAuthentication();
7584

7685
if (existingAuthn == null || !existingAuthn.isAuthenticated()) {
77-
String username = StringUtils.trimToNull(httpRequest.getHeader(userNameHeaderName));
86+
HttpServletRequest httpRequest = (HttpServletRequest) request;
87+
String username = StringUtils.trimToNull(httpRequest.getHeader(userNameHeaderName));
7888

7989
if (StringUtils.isNotBlank(username)) {
8090
List<GrantedAuthority> grantedAuthorities = getAuthoritiesFromRanger(username);
@@ -101,8 +111,8 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
101111
* Loads authorities from Ranger DB
102112
*/
103113
private List<GrantedAuthority> getAuthoritiesFromRanger(String username) {
104-
List<GrantedAuthority> ret = new ArrayList<>();
105-
Collection<String> roleList = userMgr.getRolesByLoginId(username);
114+
List<GrantedAuthority> ret = new ArrayList<>();
115+
Collection<String> roleList = userMgr.getRolesByLoginId(username);
106116

107117
if (roleList != null) {
108118
for (String role : roleList) {

security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public void testDoFilter_disabled_passesThrough() throws Exception {
7575
UserMgr userMgr = mock(UserMgr.class);
7676

7777
filter.userMgr = userMgr;
78-
filter.initialize(null);
78+
filter.init(null);
7979

8080
HttpServletRequest request = mock(HttpServletRequest.class);
8181
HttpServletResponse response = mock(HttpServletResponse.class);
@@ -97,7 +97,7 @@ public void testDoFilter_enabled_missingUsername_passesThrough() throws Exceptio
9797
UserMgr userMgr = mock(UserMgr.class);
9898

9999
filter.userMgr = userMgr;
100-
filter.initialize(null);
100+
filter.init(null);
101101

102102
HttpServletRequest request = mock(HttpServletRequest.class);
103103
HttpServletResponse response = mock(HttpServletResponse.class);
@@ -121,7 +121,7 @@ public void testDoFilter_enabled_withUsername_setsAuthenticationFromRangerDbRole
121121
UserMgr userMgr = mock(UserMgr.class);
122122

123123
filter.userMgr = userMgr;
124-
filter.initialize(null);
124+
filter.init(null);
125125

126126
when(userMgr.getRolesByLoginId("joeuser")).thenReturn(Arrays.asList("ROLE_SYS_ADMIN", "ROLE_USER"));
127127

@@ -160,7 +160,7 @@ public void testDoFilter_enabled_existingAuthenticatedContext_doesNotOverrideAut
160160
UserMgr userMgr = mock(UserMgr.class);
161161

162162
filter.userMgr = userMgr;
163-
filter.initialize(null);
163+
filter.init(null);
164164

165165
UsernamePasswordAuthenticationToken existingAuth = new UsernamePasswordAuthenticationToken("existing-user", "pwd", Collections.singletonList(new SimpleGrantedAuthority("test-role")));
166166

0 commit comments

Comments
 (0)