Repository: ranger Updated Branches: refs/heads/ranger-0.7 8675a2495 -> 98da92207
RANGER-1638 : Improve the password validation from Ranger API Project: http://git-wip-us.apache.org/repos/asf/ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/98da9220 Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/98da9220 Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/98da9220 Branch: refs/heads/ranger-0.7 Commit: 98da92207ba78a640d4ddce8f02cb2de8657040f Parents: 8675a24 Author: Gautam Borad <[email protected]> Authored: Fri Jun 23 13:50:18 2017 +0530 Committer: Gautam Borad <[email protected]> Committed: Mon Jul 10 14:23:37 2017 +0530 ---------------------------------------------------------------------- .../java/org/apache/ranger/biz/XUserMgr.java | 27 +++++++++++++++++--- .../org/apache/ranger/biz/TestXUserMgr.java | 3 ++- 2 files changed, 26 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ranger/blob/98da9220/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java index cd1de9f..b973b9a 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java @@ -180,6 +180,7 @@ public class XUserMgr extends XUserMgrBase { public VXUser createXUser(VXUser vXUser) { checkAdminAccess(); + validatePassword(vXUser); String userName = vXUser.getName(); if (userName == null || "null".equalsIgnoreCase(userName) || userName.trim().isEmpty()) { @@ -382,8 +383,10 @@ public class XUserMgr extends XUserMgrBase { && password.equals(hiddenPasswordString)) { vXPortalUser.setPassword(oldUserProfile.getPassword()); } - vXPortalUser.setPassword(password); - + else if(password != null){ + validatePassword(vXUser); + vXPortalUser.setPassword(password); + } Collection<Long> groupIdList = vXUser.getGroupIdList(); XXPortalUser xXPortalUser = new XXPortalUser(); xXPortalUser = userMgr.updateUserWithPass(vXPortalUser); @@ -514,6 +517,9 @@ public class XUserMgr extends XUserMgrBase { public VXUserGroupInfo createXUserGroupFromMap( VXUserGroupInfo vXUserGroupInfo) { checkAdminAccess(); + if(vXUserGroupInfo.getXuserInfo() != null) { + validatePassword(vXUserGroupInfo.getXuserInfo()); + } VXUserGroupInfo vxUGInfo = new VXUserGroupInfo(); VXUser vXUser = vXUserGroupInfo.getXuserInfo(); @@ -614,6 +620,7 @@ public class XUserMgr extends XUserMgrBase { public VXUser createXUserWithOutLogin(VXUser vXUser) { checkAdminAccess(); + validatePassword(vXUser); return xUserService.createXUserWithOutLogin(vXUser); } @@ -2145,5 +2152,19 @@ public class XUserMgr extends XUserMgrBase { } } return createdXUser; -} + } + private void validatePassword(VXUser vXUser) { + if (vXUser.getPassword() != null && !vXUser.getPassword().isEmpty()) { + boolean checkPassword = false; + String pattern = "(?=.*[0-9])(?=.*[a-zA-Z]).{8,}"; + checkPassword = vXUser.getPassword().trim().matches(pattern); + if (!checkPassword) { + logger.warn("validatePassword(). Password should be minimum 8 characters with min one alphabet and one numeric."); + throw restErrorUtil.createRESTException("serverMsg.xuserMgrValidatePassword", MessageEnums.INVALID_PASSWORD, null, "Password should be minimum 8 characters with min one alphabet and one numeric", null); + } + } else { + logger.warn("validatePassword(). Password cannot be blank/null."); + throw restErrorUtil.createRESTException("serverMsg.xuserMgrValidatePassword", MessageEnums.INVALID_PASSWORD, null, "Password cannot be blank/null", null); + } + } } http://git-wip-us.apache.org/repos/asf/ranger/blob/98da9220/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java index 3323f11..2542f91 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java @@ -188,6 +188,7 @@ public class TestXUserMgr { vxUser.setName("grouptest"); vxUser.setUserRoleList(userRoleList); vxUser.setGroupNameList(groupNameList); + vxUser.setPassword("usertest123"); return vxUser; } @@ -835,7 +836,7 @@ public class TestXUserMgr { VXUser vXUser = new VXUser(); vXUser.setName("user1"); vXUser.setDescription("testuser1 -added for unit testing"); - + vXUser.setPassword("usertest123"); List<VXGroupUser> vXGroupUserList = new ArrayList<VXGroupUser>(); List<VXGroup> vXGroupList = new ArrayList<VXGroup>();
