Skip to content

Commit a3f2ba4

Browse files
RANGER-5342: USER-role users with names similar to admin or keyadmin can query those admin/keyadmin users.
1 parent dd8b8c6 commit a3f2ba4

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
import javax.ws.rs.core.Response;
112112

113113
import java.util.ArrayList;
114+
import java.util.Collections;
114115
import java.util.HashMap;
115116
import java.util.List;
116117
import java.util.Map;
@@ -457,13 +458,27 @@ public VXUserList searchXUsers(@Context HttpServletRequest request, @QueryParam(
457458
hasRole = !userRolesList.contains(RangerConstants.ROLE_KEY_ADMIN_AUDITOR) ? userRolesList.add(RangerConstants.ROLE_KEY_ADMIN_AUDITOR) : hasRole;
458459
hasRole = !userRolesList.contains(RangerConstants.ROLE_USER) ? userRolesList.add(RangerConstants.ROLE_USER) : hasRole;
459460
} else if (loggedInVXUser.getUserRoleList().contains(RangerConstants.ROLE_USER)) {
461+
if ((CollectionUtils.isNotEmpty(userRolesList) && (userRolesList.size() != 1 || !userRolesList.contains(RangerConstants.ROLE_USER)))
462+
|| (userRole != null && !RangerConstants.ROLE_USER.equals(userRole))) {
463+
throw restErrorUtil.create403RESTException("Logged-In user is not allowed to access requested user data.");
464+
}
465+
460466
logger.info("Logged-In user having user role will be able to fetch his own user details.");
461467

462-
if (!searchCriteria.getParamList().containsKey("name")) {
463-
searchCriteria.addParam("name", loggedInVXUser.getName());
464-
} else if (searchCriteria.getParamList().containsKey("name") && !stringUtil.isEmpty(searchCriteria.getParamValue("name").toString()) && !searchCriteria.getParamValue("name").toString().equalsIgnoreCase(loggedInVXUser.getName())) {
468+
if (searchCriteria.getParamList().containsKey("name") && !stringUtil.isEmpty(searchCriteria.getParamValue("name").toString()) && !searchCriteria.getParamValue("name").toString().equalsIgnoreCase(loggedInVXUser.getName())) {
465469
throw restErrorUtil.create403RESTException("Logged-In user is not allowed to access requested user data.");
466470
}
471+
472+
VXUserList vXUserList = new VXUserList();
473+
vXUserList.setVXUsers(Collections.singletonList(xUserMgr.getMaskedVXUser(loggedInVXUser)));
474+
vXUserList.setStartIndex(searchCriteria.getStartIndex());
475+
vXUserList.setResultSize(vXUserList.getVXUsers().size());
476+
vXUserList.setTotalCount(vXUserList.getVXUsers().size());
477+
vXUserList.setPageSize(searchCriteria.getMaxRows());
478+
vXUserList.setSortBy(searchCriteria.getSortBy());
479+
vXUserList.setSortType(searchCriteria.getSortType());
480+
481+
return vXUserList;
467482
}
468483
}
469484
}

0 commit comments

Comments
 (0)