RANGER-1124:Good coding practices Signed-off-by: Velmurugan Periasamy <[email protected]> (cherry picked from commit a684b48c5a09b2432017249eefad70bc8e36123a)
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/b7956495 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/b7956495 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/b7956495 Branch: refs/heads/ranger-0.6 Commit: b7956495617d855660309e4d1cb4081b95d905e2 Parents: e8bc76f Author: pradeep agrawal <[email protected]> Authored: Fri Jul 29 07:19:30 2016 +0530 Committer: Velmurugan Periasamy <[email protected]> Committed: Thu Aug 11 09:33:36 2016 +0530 ---------------------------------------------------------------------- .../hadoop/crypto/key/RangerKeyStore.java | 50 ++- .../services/kms/client/KMSResourceMgr.java | 12 +- .../java/org/apache/ranger/biz/KmsKeyMgr.java | 383 ++++++++++--------- .../org/apache/ranger/biz/RangerBizUtil.java | 5 +- .../org/apache/ranger/biz/ServiceDBStore.java | 19 +- .../java/org/apache/ranger/biz/ServiceMgr.java | 12 +- .../java/org/apache/ranger/biz/SessionMgr.java | 4 - .../java/org/apache/ranger/biz/UserMgr.java | 4 +- .../java/org/apache/ranger/biz/XUserMgr.java | 58 +-- .../org/apache/ranger/common/SearchField.java | 4 +- .../org/apache/ranger/common/ServiceUtil.java | 2 +- .../org/apache/ranger/common/db/BaseDao.java | 17 +- .../java/org/apache/ranger/db/XXPolicyDao.java | 4 +- .../ranger/db/XXServiceVersionInfoDao.java | 4 - .../ranger/entity/XXContextEnricherDef.java | 6 +- .../org/apache/ranger/entity/XXPolicyBase.java | 6 +- .../ranger/entity/XXPolicyConditionDef.java | 6 +- .../ranger/entity/XXPolicyItemUserPerm.java | 6 +- .../java/org/apache/ranger/rest/AssetREST.java | 16 +- .../org/apache/ranger/rest/ServiceREST.java | 22 +- .../java/org/apache/ranger/rest/TagREST.java | 4 +- .../handler/RangerAuthenticationProvider.java | 11 +- .../RangerAuthenticationEntryPoint.java | 3 +- .../filter/RangerSSOAuthenticationFilter.java | 17 +- .../RangerSecurityContextFormationFilter.java | 5 +- .../ranger/service/RangerPolicyService.java | 2 +- .../java/org/apache/ranger/solr/SolrMgr.java | 8 +- 27 files changed, 386 insertions(+), 304 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStore.java ---------------------------------------------------------------------- diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStore.java b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStore.java index abfab25..f91fc50 100644 --- a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStore.java +++ b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStore.java @@ -69,12 +69,12 @@ public class RangerKeyStore extends KeyStoreSpi { // keys private static class KeyEntry { - Date date; // the creation date of this entry + Date date=new Date(); // the creation date of this entry }; // Secret key private static final class SecretKeyEntry { - Date date; // the creation date of this entry + Date date=new Date(); // the creation date of this entry SealedObject sealedKey; String cipher_field; int bit_length; @@ -127,12 +127,15 @@ public class RangerKeyStore extends KeyStoreSpi { @Override public Date engineGetCreationDate(String alias) { Object entry = keyEntries.get(convertAlias(alias)); + Date date=null; if (entry != null) { - return new Date(((KeyEntry)entry).date.getTime()); - } else { - return null; - } - } + KeyEntry keyEntry=(KeyEntry)entry; + if(keyEntry.date!=null){ + date=new Date(keyEntry.date.getTime()); + } + } + return date; + } public void addKeyEntry(String alias, Key key, char[] password, String cipher, int bitLength, String description, int version, String attributes) @@ -331,10 +334,14 @@ public class RangerKeyStore extends KeyStoreSpi { } keyEntries.clear(); - md = getKeyedMessageDigest(password); + if(password!=null){ + md = getKeyedMessageDigest(password); + } - byte computed[]; - computed = md.digest(); + byte computed[]={}; + if(md!=null){ + computed = md.digest(); + } for(XXRangerKeyStore rangerKey : rangerKeyDetails){ String encoded = rangerKey.getEncoded(); byte[] data = DatatypeConverter.parseBase64Binary(encoded); @@ -555,18 +562,19 @@ public class RangerKeyStore extends KeyStoreSpi { KeyStore ks; try { ks = KeyStore.getInstance(fileFormat); - ks.load(null, storePass); - String alias = null; - engineLoad(null, masterKey); - Enumeration<String> e = engineAliases(); - Key key; - while (e.hasMoreElements()) { - alias = e.nextElement(); - key = engineGetKey(alias, masterKey); - ks.setKeyEntry(alias, key, keyPass, null); + if(ks!=null){ + ks.load(null, storePass); + String alias = null; + engineLoad(null, masterKey); + Enumeration<String> e = engineAliases(); + Key key; + while (e.hasMoreElements()) { + alias = e.nextElement(); + key = engineGetKey(alias, masterKey); + ks.setKeyEntry(alias, key, keyPass, null); + } + ks.store(stream, storePass); } - - ks.store(stream, storePass); } catch (Throwable t) { logger.error("Unable to load keystore file ", t); throw new IOException(t) ; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/plugin-kms/src/main/java/org/apache/ranger/services/kms/client/KMSResourceMgr.java ---------------------------------------------------------------------- diff --git a/plugin-kms/src/main/java/org/apache/ranger/services/kms/client/KMSResourceMgr.java b/plugin-kms/src/main/java/org/apache/ranger/services/kms/client/KMSResourceMgr.java index e61d0bc..bf1f493 100755 --- a/plugin-kms/src/main/java/org/apache/ranger/services/kms/client/KMSResourceMgr.java +++ b/plugin-kms/src/main/java/org/apache/ranger/services/kms/client/KMSResourceMgr.java @@ -84,9 +84,11 @@ public class KMSResourceMgr { public static List<String> getKMSResource(String url, String username, String password, String rangerPrincipal, String rangerKeytab, String nameRules, String authType, String kmsKeyName, List<String> kmsKeyList) { List<String> topologyList = null; final KMSClient KMSClient = KMSConnectionMgr.getKMSClient(url, username, password, rangerPrincipal, rangerKeytab, nameRules, authType); - synchronized(KMSClient){ - topologyList = KMSClient.getKeyList(kmsKeyName, kmsKeyList); - } - return topologyList; - } + if(KMSClient!=null){ + synchronized(KMSClient){ + topologyList = KMSClient.getKeyList(kmsKeyName, kmsKeyList); + } + } + return topologyList; + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/KmsKeyMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/KmsKeyMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/KmsKeyMgr.java index 693e959..d565ebf 100755 --- a/security-admin/src/main/java/org/apache/ranger/biz/KmsKeyMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/KmsKeyMgr.java @@ -125,52 +125,54 @@ public class KmsKeyMgr { } catch (Exception e1) { logger.error("checkKerberos(" + repoName + ") failed", e1); } - for (int i = 0; i < providers.length; i++) { - Client c = getClient(); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); - String keyLists = KMS_KEY_LIST_URI.replaceAll( - Pattern.quote("${userName}"), currentUserLoginId); - connProvider = providers[i]; - String uri = providers[i] - + (providers[i].endsWith("/") ? keyLists : ("/" + keyLists)); - if(!isKerberos){ - uri = uri.concat("?user.name="+currentUserLoginId); - }else{ - uri = uri.concat("?doAs="+currentUserLoginId); - } - final WebResource r = c.resource(uri); - try { - String response = null; + if(providers!=null){ + for (int i = 0; i < providers.length; i++) { + Client c = getClient(); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String keyLists = KMS_KEY_LIST_URI.replaceAll( + Pattern.quote("${userName}"), currentUserLoginId); + connProvider = providers[i]; + String uri = providers[i] + + (providers[i].endsWith("/") ? keyLists : ("/" + keyLists)); if(!isKerberos){ - response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + uri = uri.concat("?user.name="+currentUserLoginId); }else{ - Subject sub = getSubjectForKerberos(repoName); - response = Subject.doAs(sub, new PrivilegedAction<String>() { - @Override - public String run() { - return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); - } - }); + uri = uri.concat("?doAs="+currentUserLoginId); } - Gson gson = new GsonBuilder().create(); - logger.debug(" Search Key RESPONSE: [" + response + "]"); - keys = gson.fromJson(response, List.class); - Collections.sort(keys); - VXKmsKeyList vxKmsKeyList2 = new VXKmsKeyList(); - List<VXKmsKey> vXKeys2 = new ArrayList<VXKmsKey>(); - for (String name : keys) { - VXKmsKey key = new VXKmsKey(); - key.setName(name); - vXKeys2.add(key); + final WebResource r = c.resource(uri); + try { + String response = null; + if(!isKerberos){ + response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + }else{ + Subject sub = getSubjectForKerberos(repoName); + response = Subject.doAs(sub, new PrivilegedAction<String>() { + @Override + public String run() { + return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + } + }); + } + Gson gson = new GsonBuilder().create(); + logger.debug(" Search Key RESPONSE: [" + response + "]"); + keys = gson.fromJson(response, List.class); + Collections.sort(keys); + VXKmsKeyList vxKmsKeyList2 = new VXKmsKeyList(); + List<VXKmsKey> vXKeys2 = new ArrayList<VXKmsKey>(); + for (String name : keys) { + VXKmsKey key = new VXKmsKey(); + key.setName(name); + vXKeys2.add(key); + } + vxKmsKeyList2.setVXKeys(vXKeys2); + vxKmsKeyList = getFilteredKeyList(request, vxKmsKeyList2); + break; + } catch (Exception e) { + if (e instanceof UniformInterfaceException || i == providers.length - 1) + throw e; + else + continue; } - vxKmsKeyList2.setVXKeys(vXKeys2); - vxKmsKeyList = getFilteredKeyList(request, vxKmsKeyList2); - break; - } catch (Exception e) { - if (e instanceof UniformInterfaceException || i == providers.length - 1) - throw e; - else - continue; } } //details @@ -186,7 +188,7 @@ public class KmsKeyMgr { request.getParameter("pageSize"), 0, "Invalid value for parameter pageSize", MessageEnums.INVALID_INPUT_DATA, null, "pageSize"); - pageSize = pageSize < 0 ? 0 : pageSize; + pageSize = pageSize < 0 ? 0 : pageSize; vxKmsKeyList.setResultSize(lstKMSKey.size()); vxKmsKeyList.setTotalCount(lstKMSKey.size()); @@ -196,14 +198,20 @@ public class KmsKeyMgr { startIndex = startIndex >= lstKMSKey.size() ? 0 : startIndex; lstKMSKey = lstKMSKey.subList(startIndex, lstKMSKey.size()); } - for (VXKmsKey kmsKey : lstKMSKey) { - VXKmsKey key = getKeyFromUri(connProvider, kmsKey.getName(), isKerberos, repoName); - vXKeys.add(key); - } + if(CollectionUtils.isNotEmpty(lstKMSKey)){ + for (VXKmsKey kmsKey : lstKMSKey) { + if(kmsKey!=null){ + VXKmsKey key = getKeyFromUri(connProvider, kmsKey.getName(), isKerberos, repoName); + vXKeys.add(key); + } + } + } vxKmsKeyList.setStartIndex(startIndex); vxKmsKeyList.setPageSize(pageSize); } - vxKmsKeyList.setVXKeys(vXKeys); + if(vxKmsKeyList!=null){ + vxKmsKeyList.setVXKeys(vXKeys); + } return vxKmsKeyList; } @@ -221,40 +229,42 @@ public class KmsKeyMgr { } catch (Exception e1) { logger.error("checkKerberos(" + provider + ") failed", e1); } - for (int i = 0; i < providers.length; i++) { - Client c = getClient(); - String rollRest = KMS_ROLL_KEY_URI.replaceAll(Pattern.quote("${alias}"), vXKey.getName()); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); - String uri = providers[i] + (providers[i].endsWith("/") ? rollRest : ("/" + rollRest)); - if(!isKerberos){ - uri = uri.concat("?user.name="+currentUserLoginId); - }else{ - uri = uri.concat("?doAs="+currentUserLoginId); - } - final WebResource r = c.resource(uri); - Gson gson = new GsonBuilder().create(); - final String jsonString = gson.toJson(vXKey); - try { - String response = null; + if(providers!=null){ + for (int i = 0; i < providers.length; i++) { + Client c = getClient(); + String rollRest = KMS_ROLL_KEY_URI.replaceAll(Pattern.quote("${alias}"), vXKey.getName()); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String uri = providers[i] + (providers[i].endsWith("/") ? rollRest : ("/" + rollRest)); if(!isKerberos){ - response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString);} - else{ - Subject sub = getSubjectForKerberos(provider); - response = Subject.doAs(sub, new PrivilegedAction<String>() { - @Override - public String run() { - return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); - } - }); - } - logger.debug("Roll RESPONSE: [" + response + "]"); - ret = gson.fromJson(response, VXKmsKey.class); - break; - } catch (Exception e) { - if (e instanceof UniformInterfaceException || i == providers.length - 1) - throw e; - else - continue; + uri = uri.concat("?user.name="+currentUserLoginId); + }else{ + uri = uri.concat("?doAs="+currentUserLoginId); + } + final WebResource r = c.resource(uri); + Gson gson = new GsonBuilder().create(); + final String jsonString = gson.toJson(vXKey); + try { + String response = null; + if(!isKerberos){ + response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString);} + else{ + Subject sub = getSubjectForKerberos(provider); + response = Subject.doAs(sub, new PrivilegedAction<String>() { + @Override + public String run() { + return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); + } + }); + } + logger.debug("Roll RESPONSE: [" + response + "]"); + ret = gson.fromJson(response, VXKmsKey.class); + break; + } catch (Exception e) { + if (e instanceof UniformInterfaceException || i == providers.length - 1) + throw e; + else + continue; + } } } return ret; @@ -273,39 +283,41 @@ public class KmsKeyMgr { } catch (Exception e1) { logger.error("checkKerberos(" + provider + ") failed", e1); } - for (int i = 0; i < providers.length; i++) { - Client c = getClient(); - String deleteRest = KMS_DELETE_KEY_URI.replaceAll(Pattern.quote("${alias}"), name); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); - String uri = providers[i] + (providers[i].endsWith("/") ? deleteRest : ("/" + deleteRest)); - if(!isKerberos){ - uri = uri.concat("?user.name="+currentUserLoginId); - }else{ - uri = uri.concat("?doAs="+currentUserLoginId); - } - final WebResource r = c.resource(uri); - try { - String response = null; + if(providers!=null){ + for (int i = 0; i < providers.length; i++) { + Client c = getClient(); + String deleteRest = KMS_DELETE_KEY_URI.replaceAll(Pattern.quote("${alias}"), name); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String uri = providers[i] + (providers[i].endsWith("/") ? deleteRest : ("/" + deleteRest)); if(!isKerberos){ - response = r.delete(String.class) ; + uri = uri.concat("?user.name="+currentUserLoginId); }else{ - Subject sub = getSubjectForKerberos(provider); - response = Subject.doAs(sub, new PrivilegedAction<String>() { - @Override - public String run() { - return r.delete(String.class); - } - }); + uri = uri.concat("?doAs="+currentUserLoginId); + } + final WebResource r = c.resource(uri); + try { + String response = null; + if(!isKerberos){ + response = r.delete(String.class) ; + }else{ + Subject sub = getSubjectForKerberos(provider); + response = Subject.doAs(sub, new PrivilegedAction<String>() { + @Override + public String run() { + return r.delete(String.class); + } + }); + } + logger.debug("delete RESPONSE: [" + response + "]") ; + break; + } catch (Exception e) { + if (e instanceof UniformInterfaceException || i == providers.length - 1) + throw e; + else + continue; } - logger.debug("delete RESPONSE: [" + response + "]") ; - break; - } catch (Exception e) { - if (e instanceof UniformInterfaceException || i == providers.length - 1) - throw e; - else - continue; } - } + } } public VXKmsKey createKey(String provider, VXKmsKey vXKey) throws Exception{ @@ -323,39 +335,41 @@ public class KmsKeyMgr { } catch (Exception e1) { logger.error("checkKerberos(" + provider + ") failed", e1); } - for (int i = 0; i < providers.length; i++) { - Client c = getClient(); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); - String uri = providers[i] + (providers[i].endsWith("/") ? KMS_ADD_KEY_URI : ("/" + KMS_ADD_KEY_URI)); - if(!isKerberos){ - uri = uri.concat("?user.name="+currentUserLoginId); - }else{ - uri = uri.concat("?doAs="+currentUserLoginId); - } - final WebResource r = c.resource(uri); - Gson gson = new GsonBuilder().create(); - final String jsonString = gson.toJson(vXKey); - try { - String response = null; + if(providers!=null){ + for (int i = 0; i < providers.length; i++) { + Client c = getClient(); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String uri = providers[i] + (providers[i].endsWith("/") ? KMS_ADD_KEY_URI : ("/" + KMS_ADD_KEY_URI)); if(!isKerberos){ - response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); + uri = uri.concat("?user.name="+currentUserLoginId); }else{ - Subject sub = getSubjectForKerberos(provider); - response = Subject.doAs(sub, new PrivilegedAction<String>() { - @Override - public String run() { - return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); - } - }); + uri = uri.concat("?doAs="+currentUserLoginId); + } + final WebResource r = c.resource(uri); + Gson gson = new GsonBuilder().create(); + final String jsonString = gson.toJson(vXKey); + try { + String response = null; + if(!isKerberos){ + response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); + }else{ + Subject sub = getSubjectForKerberos(provider); + response = Subject.doAs(sub, new PrivilegedAction<String>() { + @Override + public String run() { + return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class, jsonString); + } + }); + } + logger.debug("Create RESPONSE: [" + response + "]"); + ret = gson.fromJson(response, VXKmsKey.class); + return ret; + } catch (Exception e) { + if (e instanceof UniformInterfaceException || i == providers.length - 1) + throw e; + else + continue; } - logger.debug("Create RESPONSE: [" + response + "]"); - ret = gson.fromJson(response, VXKmsKey.class); - return ret; - } catch (Exception e) { - if (e instanceof UniformInterfaceException || i == providers.length - 1) - throw e; - else - continue; } } return ret; @@ -374,39 +388,41 @@ public class KmsKeyMgr { } catch (Exception e1) { logger.error("checkKerberos(" + provider + ") failed", e1); } - for (int i = 0; i < providers.length; i++) { - Client c = getClient(); - String keyRest = KMS_KEY_METADATA_URI.replaceAll(Pattern.quote("${alias}"), name); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); - String uri = providers[i] + (providers[i].endsWith("/") ? keyRest : ("/" + keyRest)); - if(!isKerberos){ - uri = uri.concat("?user.name="+currentUserLoginId); - }else{ - uri = uri.concat("?doAs="+currentUserLoginId); - } - final WebResource r = c.resource(uri); - try { - String response = null; + if(providers!=null){ + for (int i = 0; i < providers.length; i++) { + Client c = getClient(); + String keyRest = KMS_KEY_METADATA_URI.replaceAll(Pattern.quote("${alias}"), name); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String uri = providers[i] + (providers[i].endsWith("/") ? keyRest : ("/" + keyRest)); if(!isKerberos){ - response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + uri = uri.concat("?user.name="+currentUserLoginId); }else{ - Subject sub = getSubjectForKerberos(provider); - response = Subject.doAs(sub, new PrivilegedAction<String>() { - @Override - public String run() { - return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); - } - }); + uri = uri.concat("?doAs="+currentUserLoginId); + } + final WebResource r = c.resource(uri); + try { + String response = null; + if(!isKerberos){ + response = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + }else{ + Subject sub = getSubjectForKerberos(provider); + response = Subject.doAs(sub, new PrivilegedAction<String>() { + @Override + public String run() { + return r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).get(String.class); + } + }); + } + Gson gson = new GsonBuilder().create(); + logger.debug("RESPONSE: [" + response + "]"); + VXKmsKey key = gson.fromJson(response, VXKmsKey.class); + return key; + } catch (Exception e) { + if (e instanceof UniformInterfaceException || i == providers.length - 1) + throw e; + else + continue; } - Gson gson = new GsonBuilder().create(); - logger.debug("RESPONSE: [" + response + "]"); - VXKmsKey key = gson.fromJson(response, VXKmsKey.class); - return key; - } catch (Exception e) { - if (e instanceof UniformInterfaceException || i == providers.length - 1) - throw e; - else - continue; } } return null; @@ -415,7 +431,7 @@ public class KmsKeyMgr { public VXKmsKey getKeyFromUri(String provider, String name, boolean isKerberos, String repoName) throws Exception { Client c = getClient(); String keyRest = KMS_KEY_METADATA_URI.replaceAll(Pattern.quote("${alias}"), name); - String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); + String currentUserLoginId = ContextUtil.getCurrentUserLoginId(); String uri = provider + (provider.endsWith("/") ? keyRest : ("/" + keyRest)); if(!isKerberos){ uri = uri.concat("?user.name="+currentUserLoginId); @@ -438,7 +454,7 @@ public class KmsKeyMgr { Gson gson = new GsonBuilder().create(); logger.debug("RESPONSE: [" + response + "]"); VXKmsKey key = gson.fromJson(response, VXKmsKey.class); - return key; + return key; } private String[] getKMSURL(String name) throws Exception{ @@ -446,21 +462,24 @@ public class KmsKeyMgr { RangerService rangerService = null; try { rangerService = svcStore.getServiceByName(name); - String kmsUrl = rangerService.getConfigs().get(KMS_URL_CONFIG); - String dbKmsUrl = kmsUrl; - if(providerList.containsKey(kmsUrl)){ - kmsUrl = providerList.get(kmsUrl); + if(rangerService!=null){ + String kmsUrl = rangerService.getConfigs().get(KMS_URL_CONFIG); + String dbKmsUrl = kmsUrl; + if(providerList.containsKey(kmsUrl)){ + kmsUrl = providerList.get(kmsUrl); + }else{ + providerList.put(kmsUrl, kmsUrl); + } + providers = createProvider(dbKmsUrl,kmsUrl); }else{ - providerList.put(kmsUrl, kmsUrl); + throw new Exception("Service " + name + " not found"); } - providers = createProvider(dbKmsUrl,kmsUrl); } catch (Exception excp) { logger.error("getServiceByName(" + name + ") failed", excp); throw new Exception("getServiceByName(" + name + ") failed", excp); } - - if (rangerService == null || providers == null) { - throw new Exception("Provider " + name + " not found"); + if (providers == null) { + throw new Exception("Providers for service " + name + " not found"); } return providers; } @@ -554,7 +573,7 @@ public class KmsKeyMgr { } private String getKMSPassword(String srvName) throws Exception { - XXService rangerService = rangerDaoManagerBase.getXXService().findByName(srvName); + XXService rangerService = rangerDaoManagerBase.getXXService().findByName(srvName); XXServiceConfigMap xxConfigMap = rangerDaoManagerBase.getXXServiceConfigMap().findByServiceAndConfigKey(rangerService.getId(), KMS_PASSWORD); String encryptedPwd = xxConfigMap.getConfigvalue(); String pwd = PasswordUtils.decryptPassword(encryptedPwd); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java index e0a9840..32ffef9 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java @@ -1061,7 +1061,10 @@ public class RangerBizUtil { } else { int interval = max - min; int randomNum = random.nextInt(); - return ((Math.abs(randomNum) % interval) + min); + if(randomNum<0){ + randomNum=Math.abs(randomNum); + } + return ((randomNum % interval) + min); } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index 9af5b5f..27bc277 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -2023,9 +2023,20 @@ public class ServiceDBStore extends AbstractServiceStore { } finally { - in.close(); - out.flush(); - out.close(); + try{ + if(in!=null){ + in.close(); + in=null; + } + }catch(Exception ex){ + } + try{ + if(out!=null){ + out.flush(); + out.close(); + } + }catch(Exception ex){ + } } } @@ -3285,7 +3296,7 @@ public class ServiceDBStore extends AbstractServiceStore { break; } - if (serviceTypeId == 100) { + if (serviceTypeId!=null && serviceTypeId.equals(Long.valueOf(100L))) { Map<String, RangerPolicyResource> resources = policy.getResources(); if (resources != null) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java index 0059884..65d41fb 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java @@ -159,12 +159,12 @@ public class ServiceMgr { service.getConfigs().put(HadoopConfigHolder.RANGER_AUTH_TYPE, authType); } } - - Map<String, String> newConfigs = rangerSvcService.getConfigsWithDecryptedPassword(service); - service.setConfigs(newConfigs); - - RangerBaseService svc = getRangerServiceByService(service, svcStore); - + RangerBaseService svc=null; + if(service!=null){ + Map<String, String> newConfigs = rangerSvcService.getConfigsWithDecryptedPassword(service); + service.setConfigs(newConfigs); + svc = getRangerServiceByService(service, svcStore); + } if(LOG.isDebugEnabled()) { LOG.debug("==> ServiceMgr.validateConfig for Service: (" + svc + ")"); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java index 2e9d6d5..f591eb4 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java @@ -96,10 +96,6 @@ public class SessionMgr { private static final Long SESSION_UPDATE_INTERVAL_IN_MILLIS = 30 * DateUtils.MILLIS_PER_MINUTE; - public UserSessionBase processSuccessLogin(int authType, String userAgent) { - return processSuccessLogin(authType, userAgent, null); - } - public UserSessionBase processSuccessLogin(int authType, String userAgent, HttpServletRequest httpRequest) { boolean newSessionCreation = true; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java index a508926..6c305c4 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java @@ -742,8 +742,8 @@ public class UserMgr { // Get total count first Query query = createUserSearchQuery(countQueryStr, null, searchCriteria); Long count = (Long) query.getSingleResult(); - int resultSize = Integer.parseInt(count.toString()); - if (count == null || count.longValue() == 0) { + int resultSize = count!=null ? count.intValue() :0; + if (resultSize == 0) { return returnList; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/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 242a27e..6dc1e2f 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 @@ -234,35 +234,39 @@ public class XUserMgr extends XUserMgrBase { } // xaBizUtil.createTrxLog(trxLogList); - - assignPermissionToUser(vXPortalUser, true); + if(vXPortalUser!=null){ + assignPermissionToUser(vXPortalUser, true); + } return createdXUser; } public void assignPermissionToUser(VXPortalUser vXPortalUser, boolean isCreate) { HashMap<String, Long> moduleNameId = getAllModuleNameAndIdMap(); + if(moduleNameId!=null && vXPortalUser!=null){ + if(CollectionUtils.isNotEmpty(vXPortalUser.getUserRoleList())){ + for (String role : vXPortalUser.getUserRoleList()) { + + if (role.equals(RangerConstants.ROLE_USER)) { + + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); + } else if (role.equals(RangerConstants.ROLE_SYS_ADMIN)) { + + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_AUDIT), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_USER_GROUPS), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_TAG_BASED_POLICIES), isCreate); + } else if (role.equals(RangerConstants.ROLE_KEY_ADMIN)) { + + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_KEY_MANAGER), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); + createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); + } - for (String role : vXPortalUser.getUserRoleList()) { - - if (role.equals(RangerConstants.ROLE_USER)) { - - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); - } else if (role.equals(RangerConstants.ROLE_SYS_ADMIN)) { - - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_AUDIT), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_USER_GROUPS), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_TAG_BASED_POLICIES), isCreate); - } else if (role.equals(RangerConstants.ROLE_KEY_ADMIN)) { - - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_KEY_MANAGER), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_REPORTS), isCreate); - createOrUpdateUserPermisson(vXPortalUser, moduleNameId.get(RangerConstants.MODULE_RESOURCE_BASED_POLICIES), isCreate); + } } - } } @@ -1606,7 +1610,10 @@ public class XUserMgr extends XUserMgrBase { } XXPortalUserDao xXPortalUserDao=daoManager.getXXPortalUser(); XXPortalUser xXPortalUser=xXPortalUserDao.findByLoginId(vXUser.getName().trim()); - VXPortalUser vXPortalUser=xPortalUserService.populateViewBean(xXPortalUser); + VXPortalUser vXPortalUser=null; + if(xXPortalUser!=null){ + vXPortalUser=xPortalUserService.populateViewBean(xXPortalUser); + } if(vXPortalUser==null ||StringUtil.isEmpty(vXPortalUser.getLoginId())){ throw restErrorUtil.createRESTException("No user found with id=" + id); } @@ -1772,11 +1779,8 @@ public class XUserMgr extends XUserMgrBase { xXPortalUserDao.remove(xXPortalUserId); List<XXTrxLog> trxLogList =xUserService.getTransactionLog(xUserService.populateViewBean(xXUser), "delete"); xaBizUtil.createTrxLog(trxLogList); - if (xXPortalUser != null) { - trxLogList=xPortalUserService - .getTransactionLog(xPortalUserService.populateViewBean(xXPortalUser), "delete"); - xaBizUtil.createTrxLog(trxLogList); - } + trxLogList=xPortalUserService.getTransactionLog(xPortalUserService.populateViewBean(xXPortalUser), "delete"); + xaBizUtil.createTrxLog(trxLogList); } } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/common/SearchField.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/common/SearchField.java b/security-admin/src/main/java/org/apache/ranger/common/SearchField.java index 1891edb..2d6ab14 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/SearchField.java +++ b/security-admin/src/main/java/org/apache/ranger/common/SearchField.java @@ -213,5 +213,7 @@ public class SearchField { public String getCustomCondition() { return customCondition; } - + public void setCustomCondition(String conditions) { + customCondition=conditions; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java index 7355e3d..8252bca 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java @@ -1286,7 +1286,7 @@ public class ServiceUtil { if ( AppConstants.getEnumFor_XAPermType(perm) != 0 ) { if (perm.equalsIgnoreCase("Admin")) { delegatedAdmin=true; - if ( assetType != RangerCommonEnums.ASSET_HBASE) { + if (assetType!=null && assetType.intValue() != RangerCommonEnums.ASSET_HBASE) { continue; } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java index e3ba5a6..f64cc2d 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java +++ b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java @@ -244,16 +244,17 @@ public abstract class BaseDao<T> { public void updateUserIDReference(String paramName,long oldID) { Table table = tClass.getAnnotation(Table.class); - if(table == null) { + if(table != null) { + String tableName = table.name(); + String query = "update " + tableName + " set " + paramName+"=null" + + " where " +paramName+"=" + oldID; + int count=getEntityManager().createNativeQuery(query).executeUpdate(); + if(count>0){ + logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "=null where " + paramName + "=" + oldID); + } + }else{ logger.warn("Required annotation `Table` not found"); } - String tableName = table.name(); - String query = "update " + tableName + " set " + paramName+"=null" - + " where " +paramName+"=" + oldID; - int count=getEntityManager().createNativeQuery(query).executeUpdate(); - if(count>0){ - logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "=null where " + paramName + "=" + oldID); - } } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java index e25540b..5623517 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java @@ -123,7 +123,7 @@ public class XXPolicyDao extends BaseDao<XXPolicy> { updateSequence("X_POLICY_SEQ", maxId + 1); } public List<XXPolicy> findByUserId(Long userId) { - if(userId == null || userId.equals(0)) { + if(userId == null || userId.equals(Long.valueOf(0L))) { return new ArrayList<XXPolicy>(); } try { @@ -135,7 +135,7 @@ public class XXPolicyDao extends BaseDao<XXPolicy> { } } public List<XXPolicy> findByGroupId(Long groupId) { - if(groupId == null || groupId.equals(0)) { + if(groupId == null || groupId.equals(Long.valueOf(0L))) { return new ArrayList<XXPolicy>(); } try { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java index 5291045..f1535fe 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java @@ -120,10 +120,6 @@ public class XXServiceVersionInfoDao extends BaseDao<XXServiceVersionInfo> { currentTagVersion = Long.valueOf(0); } - if (updateTime == null) { - updateTime = new Date(); - } - serviceVersionInfo.setTagVersion(currentTagVersion + 1); serviceVersionInfo.setTagUpdateTime(updateTime); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/entity/XXContextEnricherDef.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXContextEnricherDef.java b/security-admin/src/main/java/org/apache/ranger/entity/XXContextEnricherDef.java index e035e58..77eb061 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXContextEnricherDef.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXContextEnricherDef.java @@ -313,10 +313,14 @@ public class XXContextEnricherDef extends XXDBBase implements */ @Override public String toString() { - return "XXContextEnricherDef [id=" + id + ", defId=" + defId + ", itemId=" + itemId + String str = "XXContextEnricherDef={"; + str += super.toString(); + str+=" [id=" + id + ", defId=" + defId + ", itemId=" + itemId + ", name=" + name + ", enricher=" + enricherOptions + ", enricherOptions=" + enricherOptions + ", order=" + order + "]"; + str += "}"; + return str; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java index 8564d43..aebe38c 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java @@ -352,9 +352,13 @@ public abstract class XXPolicyBase extends XXDBBase { */ @Override public String toString() { - return "XXPolicyBase [guid=" + guid + ", version=" + version + ", service=" + service + ", name=" + name + String str = "XXPolicyBase={"; + str += super.toString(); + str += " [guid=" + guid + ", version=" + version + ", service=" + service + ", name=" + name + ", policyType=" + policyType + ", description=" + description + ", resourceSignature=" + resourceSignature + ", isEnabled=" + isEnabled + ", isAuditEnabled=" + isAuditEnabled + "]"; + str += "}"; + return str; } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java index d738841..6b12d94 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java @@ -558,7 +558,9 @@ public class XXPolicyConditionDef extends XXDBBase implements */ @Override public String toString() { - return "XXPolicyConditionDef [id=" + id + ", defId=" + defId + ", itemId=" + itemId + String str = "XXPolicyConditionDef={"; + str += super.toString(); + str += " [id=" + id + ", defId=" + defId + ", itemId=" + itemId + ", name=" + name + ", evaluator=" + evaluator + ", evaluatorOptions=" + evaluatorOptions + ", label=" + label + ", validationRegEx=" + validationRegEx @@ -568,6 +570,8 @@ public class XXPolicyConditionDef extends XXDBBase implements + ", rbKeyValidationMessage=" + rbKeyValidationMessage + ", rbKeyDescription=" + rbKeyDescription + ", order=" + order + "]"; + str += "}"; + return str; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyItemUserPerm.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyItemUserPerm.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyItemUserPerm.java index 874ca20..69c47df 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyItemUserPerm.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyItemUserPerm.java @@ -205,9 +205,13 @@ public class XXPolicyItemUserPerm extends XXDBBase implements */ @Override public String toString() { - return "XXPolicyItemUserPerm [id=" + id + ", policyItemId=" + String str = "XXPolicyItemUserPerm={"; + str += super.toString(); + str += " [id=" + id + ", policyItemId=" + policyItemId + ", userId=" + userId + ", order=" + order + "]"; + str += "}"; + return str; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java index 3d649df..b1a2159 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java @@ -39,6 +39,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.ranger.admin.client.datatype.RESTResponse; import org.apache.ranger.biz.AssetMgr; @@ -502,12 +503,17 @@ public class AssetREST { VXResource resource = getXResource(id); - File file = assetMgr.getXResourceFile(resource, fileType); - return Response - .ok(file, MediaType.APPLICATION_OCTET_STREAM) - .header("Content-Disposition", - "attachment;filename=" + file.getName()).build(); + Response response=null; + if(resource!=null && StringUtils.isNotEmpty(fileType)){ + File file = null; + file=assetMgr.getXResourceFile(resource, fileType); + if(file!=null){ + response=Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).header("Content-Disposition","attachment;filename=" + file.getName()).build(); + file=null; + } + } + return response; } @GET http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java index 0d1e552..c491021 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java @@ -1325,7 +1325,7 @@ public class ServiceREST { throw restErrorUtil.createRESTException(exception.getMessage()); } } else { - throw restErrorUtil.createRESTException("Non-existing service specified:" + policy == null ? null : policy.getService()); + throw restErrorUtil.createRESTException("Non-existing service specified:"); } if (LOG.isDebugEnabled()) { @@ -1863,10 +1863,12 @@ public class ServiceREST { if (isKeyAdmin) { isAllowed = true; }else { - isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Download); - if(!isAllowed){ - isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Grant_Revoke); - } + if(rangerService!=null){ + isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Download); + if(!isAllowed){ + isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Grant_Revoke); + } + } } }else{ rangerService = svcStore.getServiceByName(serviceName); @@ -1874,10 +1876,12 @@ public class ServiceREST { isAllowed = true; } else{ - isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Download); - if(!isAllowed){ - isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Grant_Revoke); - } + if(rangerService!=null){ + isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Download); + if(!isAllowed){ + isAllowed = bizUtil.isUserAllowed(rangerService, Allowed_User_List_For_Grant_Revoke); + } + } } } if (isAllowed) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java index 3dfb250..8aef9a8 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java @@ -191,7 +191,9 @@ public class TagREST { try { RangerTagDef exist = tagStore.getTagDefByGuid(guid); - tagStore.deleteTagDef(exist.getId()); + if(exist!=null){ + tagStore.deleteTagDef(exist.getId()); + } } catch(Exception excp) { LOG.error("deleteTagDef(" + guid + ") failed", excp); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java b/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java index 3fa3436..00541cb 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java +++ b/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java @@ -569,12 +569,15 @@ public class RangerAuthenticationProvider implements AuthenticationProvider { } authenticator.setSaltSource(saltSource); - - String userName = authentication.getName(); + String userName =""; String userPassword = ""; - if (authentication.getCredentials() != null) { - userPassword = authentication.getCredentials().toString(); + if(authentication!=null){ + userName = authentication.getName(); + if (authentication.getCredentials() != null) { + userPassword = authentication.getCredentials().toString(); + } } + String rangerLdapDefaultRole = PropertiesUtil.getProperty("ranger.ldap.default.role", "ROLE_USER"); if (userName != null && userPassword != null && !userName.trim().isEmpty()&& !userPassword.trim().isEmpty()) { final List<GrantedAuthority> grantedAuths = new ArrayList<>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java index 2c06f58..8a7c641 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthenticationEntryPoint.java @@ -129,9 +129,10 @@ public class RangerAuthenticationEntryPoint extends response.sendError(ajaxReturnCode, ""); } else if (!(requestURL.startsWith(reqServletPath))) { if(requestURL.contains(RangerSSOAuthenticationFilter.LOCAL_LOGIN_URL)){ - if (request.getSession() != null) + if (request.getSession() != null){ request.getSession().setAttribute("locallogin","true"); request.getServletContext().setAttribute(request.getSession().getId(), "locallogin"); + } } if(request.getHeader("x-forwarded-server") != null){ super.setUseForward(true); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSSOAuthenticationFilter.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSSOAuthenticationFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSSOAuthenticationFilter.java index d431bc1..4783608 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSSOAuthenticationFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSSOAuthenticationFilter.java @@ -115,14 +115,15 @@ public class RangerSSOAuthenticationFilter implements Filter { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest)servletRequest; - if (httpRequest.getRequestedSessionId() != null && !httpRequest.isRequestedSessionIdValid()) - { - if(httpRequest.getServletContext().getAttribute(httpRequest.getRequestedSessionId()) != null && httpRequest.getServletContext().getAttribute(httpRequest.getRequestedSessionId()).toString().equals("locallogin")){ - ssoEnabled = false; - httpRequest.getSession().setAttribute("locallogin","true"); - httpRequest.getServletContext().removeAttribute(httpRequest.getRequestedSessionId()); - } - } + if (httpRequest.getRequestedSessionId() != null && !httpRequest.isRequestedSessionIdValid()){ + synchronized(httpRequest.getServletContext()){ + if(httpRequest.getServletContext().getAttribute(httpRequest.getRequestedSessionId()) != null && httpRequest.getServletContext().getAttribute(httpRequest.getRequestedSessionId()).toString().equals("locallogin")){ + ssoEnabled = false; + httpRequest.getSession().setAttribute("locallogin","true"); + httpRequest.getServletContext().removeAttribute(httpRequest.getRequestedSessionId()); + } + } + } RangerSecurityContext context = RangerContextHolder.getSecurityContext(); UserSessionBase session = context != null ? context.getUserSession() : null; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java index 7314782..f02b875 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java @@ -97,7 +97,10 @@ public class RangerSecurityContextFormationFilter extends GenericFilterBean { HttpSession httpSession = httpRequest.getSession(false); // [1]get the context from session - RangerSecurityContext context = (RangerSecurityContext) httpSession.getAttribute(AKA_SC_SESSION_KEY); + RangerSecurityContext context = null; + if(httpSession!=null){ + context=(RangerSecurityContext) httpSession.getAttribute(AKA_SC_SESSION_KEY); + } int clientTimeOffset = 0; if (context == null) { context = new RangerSecurityContext(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java index 4b792de..5616406 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java @@ -281,7 +281,7 @@ public class RangerPolicyService extends RangerPolicyServiceBase<XXPolicy, Range oldValue = String.valueOf(processIsEnabledClassFieldNameForTrxLog(oldPolicy.getIsEnabled())); } } - if (oldValue == null || value.equalsIgnoreCase(oldValue)) { + if (oldValue == null || oldValue.equalsIgnoreCase(value)) { return null; } else if (fieldName.equalsIgnoreCase(POLICY_RESOURCE_CLASS_FIELD_NAME)) { // Compare old and new resources http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b7956495/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java index 1b5793f..b924646 100644 --- a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java @@ -184,8 +184,12 @@ public class SolrMgr { } public SolrClient getSolrClient() { - if (solrClient == null) { - connect(); + if(solrClient!=null){ + return solrClient; + }else{ + synchronized(this){ + connect(); + } } return solrClient; }
