You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by sn...@apache.org on 2015/04/29 06:36:41 UTC

[1/4] incubator-ranger git commit: RANGER-001 : ranger-site changes

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 101d17673 -> 91d1e1374


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/setup.py
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/setup.py b/unixauthservice/scripts/setup.py
new file mode 100755
index 0000000..26078be
--- /dev/null
+++ b/unixauthservice/scripts/setup.py
@@ -0,0 +1,397 @@
+#!/usr/bin/python
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import re
+import StringIO
+import xml.etree.ElementTree as ET
+import ConfigParser
+import os,errno,sys,getopt
+from os import listdir
+from os.path import isfile, join, dirname, basename
+from urlparse import urlparse
+from time import gmtime, strftime, localtime
+from xml import etree
+import shutil
+import pwd, grp
+
+if (not 'JAVA_HOME' in os.environ):
+	print "ERROR: JAVA_HOME environment variable is not defined. Please define JAVA_HOME before running this script"
+	sys.exit(1)
+
+debugLevel = 1
+generateXML = 0
+installPropDirName = '.'
+pidFolderName = '/var/run/ranger'
+logFolderName = '/var/log/ranger'
+initdDirName = '/etc/init.d'
+
+rangerBaseDirName = os.getcwd() #'/etc/ranger'
+usersyncBaseDirName = 'usersync'
+confBaseDirName = 'conf'
+confDistBaseDirName = 'conf.dist'
+certBaseDirName = 'cert'
+defaultCertFileName = 'unixauthservice.jks'
+
+outputFileName = 'ranger-ugsync-site.xml'
+installPropFileName = 'install.properties'
+defaultSiteXMLFileName = 'ranger-ugsync-default.xml'
+log4jFileName          = 'log4j.xml'
+install2xmlMapFileName = 'installprop2xml.properties'
+templateFileName = 'ranger-ugsync-template.xml'
+initdProgramName = 'ranger-usersync'
+PROP2ALIASMAP = { 'ranger.usersync.ldap.ldapbindpassword':'ldap.bind.password' ,
+				   'ranger.usersync.keystore.password':'usersync.ssl.key.password',
+				   'ranger.usersync.truststore.password':'usersync.ssl.truststore.password'}
+
+installTemplateDirName = join(installPropDirName,'templates')
+confDistDirName = join(installPropDirName, confDistBaseDirName)
+ugsyncLogFolderName = join(logFolderName, 'ugsync')
+nativeAuthFolderName = join(installPropDirName, 'native')
+nativeAuthProgramName = join(nativeAuthFolderName, 'credValidator.uexe')
+usersyncBaseDirFullName = join(rangerBaseDirName, usersyncBaseDirName)
+confFolderName = join(usersyncBaseDirFullName, confBaseDirName)
+localConfFolderName = join(installPropDirName, confBaseDirName)
+certFolderName = join(confFolderName, certBaseDirName)
+defaultKSFileName = join(certFolderName, defaultCertFileName)
+defaultKSPassword = 'UnIx529p'
+defaultDNAME = 'cn=unixauthservice,ou=authenticator,o=mycompany,c=US'
+
+unixUserProp = 'unix_user'
+unixGroupProp = 'unix_group'
+
+logFolderPermMode = 0770
+rootOwnerId = 0
+initPrefixList = ['S99', 'K00']
+
+SYNC_SOURCE_KEY  = 'SYNC_SOURCE'
+SYNC_INTERVAL_NEW_KEY = 'ranger.usersync.sleeptimeinmillisbetweensynccycle'
+SYNC_SOURCE_UNIX = 'unix'
+SYNC_SOURCE_LDAP = 'ldap'
+SYNC_SOURCE_LIST = [ SYNC_SOURCE_UNIX, SYNC_SOURCE_LDAP ]
+
+credUpdateClassName =  'org.apache.ranger.credentialapi.buildks'
+#credUpdateClassName =  'com.hortonworks.credentialapi.buildks'
+
+def archiveFile(originalFileName):
+    archiveDir = dirname(originalFileName)
+    archiveFileName = "." + basename(originalFileName) + "." + (strftime("%d%m%Y%H%M%S", localtime()))
+    movedFileName = join(archiveDir,archiveFileName)
+    print "INFO: moving [%s] to [%s] ......." % (originalFileName,movedFileName)
+    os.rename(originalFileName, movedFileName)
+
+def getXMLConfigKeys(xmlFileName):
+    ret = []
+    tree = ET.parse(xmlFileName)
+    root = tree.getroot()
+    for config in root.iter('property'):
+        name = config.find('name').text
+        ret.append(name)
+    return ret
+
+def getXMLConfigMap(xmlFileName):
+    ret = {}
+    tree = ET.parse(xmlFileName)
+    root = tree.getroot()
+    for config in root.findall('property'):
+        name = config.find('name').text
+        val = config.find('value').text
+        ret[name] = val
+    return ret
+
+
+def getPropertiesConfigMap(configFileName):
+    ret = {}
+    config = StringIO.StringIO()
+    config.write('[dummysection]\n')
+    config.write(open(configFileName).read())
+    config.seek(0,os.SEEK_SET)
+    fcp = ConfigParser.ConfigParser()
+    fcp.optionxform = str
+    fcp.readfp(config)
+    for k,v in fcp.items('dummysection'):
+        ret[k] = v
+    return ret
+
+def getPropertiesKeyList(configFileName):
+    ret = []
+    config = StringIO.StringIO()
+    config.write('[dummysection]\n')
+    config.write(open(configFileName).read())
+    config.seek(0,os.SEEK_SET)
+    fcp = ConfigParser.ConfigParser()
+    fcp.optionxform = str
+    fcp.readfp(config)
+    for k,v in fcp.items('dummysection'):
+        ret.append(k)
+    return ret
+
+def writeXMLUsingProperties(xmlTemplateFileName,prop,xmlOutputFileName):
+    tree = ET.parse(xmlTemplateFileName)
+    root = tree.getroot()
+    for config in root.findall('property'):
+        name = config.find('name').text
+        if (name in prop.keys()):
+            config.find('value').text = prop[name]
+        else:
+            print "ERROR: key not found: %s" % (name)
+    if isfile(xmlOutputFileName):
+        archiveFile(xmlOutputFileName)
+    tree.write(xmlOutputFileName)
+
+def updateProppertyInJCKSFile(jcksFileName,propName,value):
+    fn = jcksFileName
+    if (value == ''):
+        value = ' '
+    cmd = "java -cp './lib/*' %s create '%s' -value '%s' -provider jceks://file%s 2>&1" % (credUpdateClassName,propName,value,fn)
+    ret = os.system(cmd)
+    if (ret != 0):
+        print "ERROR: Unable update the JCKSFile(%s) for aliasName (%s)" % (fn,propName)
+        sys.exit(1)
+    return ret
+
+
+def convertInstallPropsToXML(props):
+	directKeyMap = getPropertiesConfigMap(join(installTemplateDirName,install2xmlMapFileName))
+	ret = {}
+	for k,v in props.iteritems():
+		if (k in directKeyMap.keys()):
+			newKey = directKeyMap[k]
+			ret[newKey] = v
+		else:
+			print "Direct Key not found:%s" % (k)
+
+	ret['ranger.usersync.sink.impl.class'] = 'org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder'
+	if (SYNC_SOURCE_KEY in ret):
+		syncSource = ret[SYNC_SOURCE_KEY]
+		if (syncSource == SYNC_SOURCE_UNIX):
+			ret['ranger.usersync.source.impl.class'] = 'org.apache.ranger.unixusersync.process.UnixUserGroupBuilder'
+			if (SYNC_INTERVAL_NEW_KEY not in ret or len(str(ret[SYNC_INTERVAL_NEW_KEY])) == 0):
+				ret[SYNC_INTERVAL_NEW_KEY] = '5'
+			#for key in ret.keys():
+			#	if (key.startswith("ranger.usersync.ldap") or key.startswith("ranger.usersync.group") or key.startswith("ranger.usersync.paged")):
+			#		del ret[key]
+		elif (syncSource == SYNC_SOURCE_LDAP):
+			ret['ranger.usersync.source.impl.class'] = 'org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder'
+			if (SYNC_INTERVAL_NEW_KEY not in ret or len(str(ret[SYNC_INTERVAL_NEW_KEY])) == 0):
+				ret[SYNC_INTERVAL_NEW_KEY] = '60'
+		else:
+			print "ERROR: Invalid value (%s) defined for %s in install.properties. Only valid values are %s" % (syncSource, SYNC_SOURCE_KEY,SYNC_SOURCE_LIST)
+			sys.exit(1)
+		del ret['SYNC_SOURCE']
+	else:
+		print "ERROR: No value defined for SYNC_SOURCE in install.properties. valid values are %s" % (SYNC_SOURCE_KEY, SYNC_SOURCE_LIST)
+		sys.exit(1)
+
+	return ret
+
+def createUser(username,groupname):
+	cmd = "useradd -g %s %s -m" % (groupname,username)
+	ret = os.system(cmd)
+	if (ret != 0):
+		print "ERROR: os command execution (%s) failed. error code = %d " % (cmd, ret)
+		sys.exit(1)
+	try:
+		ret = pwd.getpwnam(username).pw_uid
+		return ret
+	except KeyError, e:
+		print "ERROR: Unable to create a new user account: %s with group %s - error [%s]" % (username,groupname,e)
+		sys.exit(1)
+
+def createGroup(groupname):
+	cmd = "groupadd %s" % (groupname)
+	ret = os.system(cmd)
+	if (ret != 0):
+		print "ERROR: os command execution (%s) failed. error code = %d " % (cmd, ret)
+		sys.exit(1)
+	try:
+		ret = grp.getgrnam(groupname).gr_gid
+		return ret
+	except KeyError, e:
+		print "ERROR: Unable to create a new group: %s" % (groupname,e)
+		sys.exit(1)
+
+def initializeInitD():
+	if (os.path.isdir(initdDirName)):
+		fn = join(installPropDirName,initdProgramName)
+		initdFn = join(initdDirName,initdProgramName)
+		shutil.copy(fn, initdFn)
+		os.chmod(initdFn,0550)
+		rcDirList = [ "/etc/rc2.d", "/etc/rc3.d", "/etc/rc.d/rc2.d", "/etc/rc.d/rc3.d" ]
+		for rcDir in rcDirList:
+			if (os.path.isdir(rcDir)):
+				for  prefix in initPrefixList:
+					scriptFn = prefix + initdProgramName
+					scriptName = join(rcDir, scriptFn)
+					if isfile(scriptName):
+						os.remove(scriptName)
+					#print "+ ln -sf %s %s" % (initdFn, scriptName)
+					os.symlink(initdFn,scriptName)
+		userSyncScriptName = "ranger-usersync-services.sh"
+		localScriptName = os.path.abspath(join(installPropDirName,userSyncScriptName))
+		ubinScriptName = join("/usr/bin",initdProgramName)
+		if isfile(ubinScriptName):
+			os.remove(ubinScriptName)
+		os.symlink(localScriptName,ubinScriptName)
+
+
+def createJavaKeystoreForSSL(fn,passwd):
+	cmd = "keytool -genkeypair -keyalg RSA -alias selfsigned -keystore '%s' -keypass '%s' -storepass '%s' -validity 3600 -keysize 2048 -dname '%s'" % (fn, passwd, passwd, defaultDNAME)
+	ret = os.system(cmd)
+	if (ret != 0):
+		print "ERROR: unable to create JavaKeystore for SSL: file (%s)" % (fn)
+		sys.exit(1)
+	return ret
+
+
+def main():
+
+	dirList = [ rangerBaseDirName, usersyncBaseDirName, confFolderName, certFolderName ]
+	for dir in dirList:
+		if (not os.path.isdir(dir)):
+			os.makedirs(dir,0750)
+
+	defFileList = [ defaultSiteXMLFileName, log4jFileName ]
+	for defFile in defFileList:
+		fn = join(confDistDirName, defFile)
+		if ( isfile(fn) ):
+			shutil.copy(fn,join(confFolderName,defFile))
+
+	#
+	# Create JAVA_HOME setting in confFolderName
+	#
+	java_home_setter_fn = join(confFolderName, 'java_home.sh')
+	if isfile(java_home_setter_fn):
+		archiveFile(java_home_setter_fn)
+	jhf = open(java_home_setter_fn, 'w')
+	str = "export JAVA_HOME=%s\n" % os.environ['JAVA_HOME']
+	jhf.write(str)
+	jhf.close()
+	os.chmod(java_home_setter_fn,0750)
+
+
+	if (not os.path.isdir(localConfFolderName)):
+		os.symlink(confFolderName, localConfFolderName)
+
+	defaultProps = getXMLConfigMap(join(confFolderName,defaultSiteXMLFileName))
+	installProps = getPropertiesConfigMap(join(installPropDirName,installPropFileName))
+	modifiedInstallProps = convertInstallPropsToXML(installProps)
+
+	mergeProps = {}
+	mergeProps.update(defaultProps)
+	mergeProps.update(modifiedInstallProps)
+
+	localLogFolderName = mergeProps['ranger.usersync.logdir']
+	if (not os.path.isdir(localLogFolderName)):
+		if (localLogFolderName != ugsyncLogFolderName):
+			os.symlink(ugsyncLogFolderName, localLogFolderName)
+
+	if (not 'ranger.usersync.keystore.file' in mergeProps):
+		mergeProps['ranger.usersync.keystore.file'] = defaultKSFileName
+
+	ksFileName = mergeProps['ranger.usersync.keystore.file']
+
+	if (not isfile(ksFileName)):
+		mergeProps['ranger.usersync.keystore.password'] = defaultKSPassword
+		createJavaKeystoreForSSL(ksFileName, defaultKSPassword)
+
+
+
+
+	fn = join(installTemplateDirName,templateFileName)
+	outfn = join(confFolderName, outputFileName)
+	writeXMLUsingProperties(fn, mergeProps, outfn)
+
+	if ( os.path.isdir(logFolderName) ):
+		logStat = os.stat(logFolderName)
+		logStat.st_uid
+		logStat.st_gid
+		ownerName = pwd.getpwuid(logStat.st_uid).pw_name
+		groupName = pwd.getpwuid(logStat.st_uid).pw_name
+	else:
+		os.makedirs(logFolderName,logFolderPermMode)
+
+	if (not os.path.isdir(pidFolderName)):
+		os.makedirs(pidFolderName,logFolderPermMode)
+
+	if (not os.path.isdir(ugsyncLogFolderName)):
+		os.makedirs(ugsyncLogFolderName,logFolderPermMode)
+
+	if (unixUserProp in mergeProps):
+		ownerName = mergeProps[unixUserProp]
+	else:
+		print "ERROR: Property [%s] not defined." % (unixUserProp)
+		sys.exit(1)
+
+	if (unixGroupProp in mergeProps):
+		groupName = mergeProps[unixGroupProp]
+	else:
+		print "ERROR: Property [%s] not defined." % (unixGroupProp)
+		sys.exit(1)
+
+	try:
+		ownerId = pwd.getpwnam(ownerName).pw_uid
+	except KeyError, e:
+		ownerId = createUser(ownerName, groupName)
+
+	try:
+		groupId = grp.getgrnam(groupName).gr_gid
+	except KeyError, e:
+		groupId = createGroup(groupId)
+
+	os.chown(logFolderName,ownerId,groupId)
+	os.chown(ugsyncLogFolderName,ownerId,groupId)
+	os.chown(pidFolderName,ownerId,groupId)
+
+	initializeInitD()
+
+	#
+	# Add password to crypt path
+	#
+
+	cryptPath = mergeProps['ranger.usersync.credstore.filename']
+
+	for keyName,aliasName in PROP2ALIASMAP.iteritems() :
+		if (keyName in mergeProps):
+			keyPassword = mergeProps[keyName]
+			updateProppertyInJCKSFile(cryptPath,aliasName,keyPassword)
+		else:
+			updateProppertyInJCKSFile(cryptPath,aliasName," ")
+
+
+	fixPermList = [ "." ]
+	for d in dirList:
+		fixPermList.append(d)
+
+	for dir in fixPermList:
+		for root, dirs, files in os.walk(dir):
+			os.chown(root, ownerId, groupId)
+			os.chmod(root,0755)
+			for obj in dirs:
+				dn = join(root,obj)
+				os.chown(dn, ownerId, groupId)
+				os.chmod(dn, 0755)
+			for obj in files:
+				fn = join(root,obj)
+				os.chown(fn, ownerId, groupId)
+				os.chmod(fn, 0750)
+
+	if isfile(nativeAuthProgramName):
+		os.chown(nativeAuthProgramName, rootOwnerId, groupId)
+		os.chmod(nativeAuthProgramName, 04550)
+	else:
+		print "WARNING: Unix Authentication Program (%s) is not available for setting chmod(4550), chown(%s:%s) " % (nativeAuthProgramName, "root", groupName)
+
+main()

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/setup.sh
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/setup.sh b/unixauthservice/scripts/setup.sh
index 858318c..ed64a36 100755
--- a/unixauthservice/scripts/setup.sh
+++ b/unixauthservice/scripts/setup.sh
@@ -15,371 +15,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
-INSTALL_BASE=$PWD
-
-MOD_NAME="ranger-usersync"
-unix_user=ranger
-unix_group=ranger
-
-INSTALL_DIR=${INSTALL_BASE}
-pidf=/var/run/ranger
-curDt=`date '+%Y%m%d%H%M%S'`
-LOGFILE=setup.log.$curDt
-
-log() {
-   local prefix="[$(date +%Y/%m/%d\ %H:%M:%S)]: "
-   echo "${prefix} $@" >> $LOGFILE
-   echo "${prefix} $@"
-}
-
-mkdir -p ${pidf}
-chown -R ${unix_user} ${pidf}
-
-# Ensure that the user is root
-MY_ID=`id -u`
-if [ "${MY_ID}" -ne 0 ]
-then
-  echo "ERROR: You must run the installation as root user."
-  exit 1
-fi
-
-# Ensure JAVA_HOME is set
-if [ "${JAVA_HOME}" == "" ]
-then
-  echo "ERROR: JAVA_HOME environment property not defined, aborting installation"
-  exit 2
-fi
-
-
-# Grep configuration properties from install.properties
-cdir=`dirname $0`
-
-check_ret_status(){
-	if [ $1 -ne 0 ]; then
-		log "[E] $2";
-		exit 1;
-	fi
-}
-
-check_ret_status_for_groupadd(){
-# 9 is the response if the group exists
-    if [ $1 -ne 0 ] && [ $1 -ne 9 ]; then
-        log "[E] $2";
-        exit 1;
-    fi
-}
-
-setup_unix_user_group(){
-
-	log "[I] Setting up UNIX user : ${unix_user} and group: ${unix_group}";
-
-	groupadd ${unix_group}
-	check_ret_status_for_groupadd $? "Creating group ${unix_group} failed"
-
-	id -u ${unix_user} > /dev/null 2>&1
-
-	if [ $? -ne 0 ]
-	then
-	    log "[I] Creating new user and adding to group";
-        useradd ${unix_user} -g ${unix_group} -m
-		check_ret_status $? "useradd ${unix_user} failed"
-	else
-	    log "[I] User already exists, adding it to group";
-	    usermod -g ${unix_group} ${unix_user}
-	fi
-
-	log "[I] Setting up UNIX user : ${unix_user} and group: ${unix_group} DONE";
-}
-
-setup_unix_user_group
-
-POLICY_MGR_URL=`grep '^[ \t]*POLICY_MGR_URL[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-MIN_UNIX_USER_ID_TO_SYNC=`grep '^[ \t]*MIN_UNIX_USER_ID_TO_SYNC[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-logdir=`grep '^[ \t]*logdir[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_SOURCE=`grep '^[ \t]*SYNC_SOURCE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_INTERVAL=`grep '^[ \t]*SYNC_INTERVAL[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_URL=`grep '^[ \t]*SYNC_LDAP_URL[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_URL[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_BIND_DN=`grep '^[ \t]*SYNC_LDAP_BIND_DN[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_BIND_DN[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_BIND_PASSWORD=`grep '^[ \t]*SYNC_LDAP_BIND_PASSWORD[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_BIND_PASSWORD[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_SEARCH_BASE=`grep '^[ \t]*SYNC_LDAP_SEARCH_BASE[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_SEARCH_BASE[ \t]*=[ \t]*::'`
-echo "$SYNC_LDAP_SEARCH_BASE"
-
-SYNC_LDAP_USER_SEARCH_BASE=`grep '^[ \t]*SYNC_LDAP_USER_SEARCH_BASE[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_USER_SEARCH_BASE[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_USER_SEARCH_SCOPE=`grep '^[ \t]*SYNC_LDAP_USER_SEARCH_SCOPE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_USER_OBJECT_CLASS=`grep '^[ \t]*SYNC_LDAP_USER_OBJECT_CLASS[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_USER_SEARCH_FILTER=`grep '^[ \t]*SYNC_LDAP_USER_SEARCH_FILTER[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_USER_SEARCH_FILTER[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_USER_NAME_ATTRIBUTE=`grep '^[ \t]*SYNC_LDAP_USER_NAME_ATTRIBUTE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE=`grep '^[ \t]*SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_USERNAME_CASE_CONVERSION=`grep '^[ \t]*SYNC_LDAP_USERNAME_CASE_CONVERSION[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_LDAP_GROUPNAME_CASE_CONVERSION=`grep '^[ \t]*SYNC_LDAP_GROUPNAME_CASE_CONVERSION[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_PAGED_RESULTS_ENABLED=`grep '^[ \t]*SYNC_PAGED_RESULTS_ENABLED[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_PAGED_RESULTS_SIZE=`grep '^[ \t]*SYNC_PAGED_RESULTS_SIZE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-
-SYNC_GROUP_SEARCH_ENABLED=`grep '^[ \t]*SYNC_GROUP_SEARCH_ENABLED[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_GROUP_USER_MAP_SYNC_ENABLED=`grep '^[ \t]*SYNC_GROUP_USER_MAP_SYNC_ENABLED[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-SYNC_GROUP_SEARCH_BASE=`grep '^[ \t]*SYNC_GROUP_SEARCH_BASE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_GROUP_SEARCH_SCOPE=`grep '^[ \t]*SYNC_GROUP_SEARCH_SCOPE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_GROUP_OBJECT_CLASS=`grep '^[ \t]*SYNC_GROUP_OBJECT_CLASS[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_LDAP_GROUP_SEARCH_FILTER=`grep '^[ \t]*SYNC_LDAP_GROUP_SEARCH_FILTER[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*SYNC_LDAP_GROUP_SEARCH_FILTER[ \t]*=[ \t]*::'`
-SYNC_GROUP_NAME_ATTRIBUTE=`grep '^[ \t]*SYNC_GROUP_NAME_ATTRIBUTE[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-SYNC_GROUP_MEMBER_ATTRIBUTE_NAME=`grep '^[ \t]*SYNC_GROUP_MEMBER_ATTRIBUTE_NAME[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | sed -e 's:[ \t]*::g'`
-
-
-if [ "${SYNC_LDAP_USERNAME_CASE_CONVERSION}" == "" ]
-then
-    SYNC_LDAP_USERNAME_CASE_CONVERSION="none"
-fi
-
-if [ "${SYNC_LDAP_GROUPNAME_CASE_CONVERSION}" == "" ]
-then
-    SYNC_LDAP_GROUPNAME_CASE_CONVERSION="none"
-fi
-
-SYNC_LDAP_BIND_KEYSTOREPATH=`grep '^[ \t]*CRED_KEYSTORE_FILENAME[ \t]*=' ${cdir}/install.properties | sed -e 's:^[ \t]*CRED_KEYSTORE_FILENAME[ \t]*=[ \t]*::'`
-
-SYNC_LDAP_BIND_ALIAS=ldap.bind.password
-
-if [ "${SYNC_INTERVAL}" != "" ]
-then
-    SYNC_INTERVAL=$((${SYNC_INTERVAL}*60*1000))
-else
-    SYNC_INTERVAL=$((5*60*1000))
-fi
-
-if [ "${SYNC_SOURCE}" == "" ]
-then
-  SYNC_SOURCE="org.apache.ranger.unixusersync.process.UnixUserGroupBuilder"
-elif [ "${SYNC_SOURCE}" == "unix" ]
-then
-  SYNC_SOURCE="org.apache.ranger.unixusersync.process.UnixUserGroupBuilder"
-elif [ "${SYNC_SOURCE}" == "ldap" ]
-then
-  SYNC_SOURCE="org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder"
-else
-  echo "Unsupported value for SYNC_SOURCE: ${SYNC_SOURCE}, supported values: ldap, unix, default: unix"
-  exit 3
-fi
-
-
-if [ "${SYNC_SOURCE}" == "org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder" ]
-then
-
-  if [ "${SYNC_INTERVAL}" == "" ]
-  then
-    SYNC_INTERVAL=$((360*60*1000))
-  fi
-
-  if [ "${SYNC_LDAP_URL}" == "" ]
-  then
-    echo "SYNC_LDAP_URL must be specified when SYNC_SOURCE is ldap"
-    exit 4
-  fi
-
-  if [ "${SYNC_LDAP_BIND_DN}" == "" ]
-  then
-    echo "SYNC_LDAP_BIND_DN must be specified when SYNC_SOURCE is ldap"
-    exit 5
-  fi
-
-  if [ "${SYNC_LDAP_USER_SEARCH_BASE}" == "" ] && [ "${SYNC_LDAP_SEARCH_BASE}" == "" ]
-  then
-    echo "SYNC_LDAP_USER_SEARCH_BASE or SYNC_LDAP_SEARCH_BASE must be specified when SYNC_SOURCE is ldap"
-    exit 6
-  fi
-
-  if [ "${SYNC_LDAP_USER_SEARCH_SCOPE}" == "" ]
-  then
-    SYNC_LDAP_USER_SEARCH_SCOPE="sub"
-  fi
-
-  if [ "${SYNC_LDAP_USER_SEARCH_SCOPE}" != "base" ] && [ "${SYNC_LDAP_USER_SEARCH_SCOPE}" != "one" ] && [ "${SYNC_LDAP_USER_SEARCH_SCOPE}" != "sub" ]
-  then
-    echo "Unsupported value for SYNC_LDAP_USER_SEARCH_SCOPE: ${SYNC_LDAP_USER_SEARCH_SCOPE}, supported values: base, one, sub"
-    exit 7
-  fi
-
-  if [ "${SYNC_LDAP_USER_OBJECT_CLASS}" == "" ]
-  then
-    SYNC_LDAP_USER_OBJECT_CLASS="person"
-  fi
-
-  if [ "${SYNC_LDAP_USER_NAME_ATTRIBUTE}" == "" ]
-  then
-    SYNC_LDAP_USER_NAME_ATTRIBUTE="cn"
-  fi
-
-  if [ "${SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE}" == "" ]
-  then
-    SYNC_LDAP_USER_NAME_ATTRIBUTE="memberof,ismemberof"
-  fi
-
-  # Store ldap bind password in credential store
-  if [[ "${SYNC_LDAP_BIND_ALIAS}" != ""  && "${SYNC_LDAP_BIND_KEYSTOREPATH}" != "" ]]
-  then
-    echo "Storing ldap bind password in credential store"
-	mkdir -p `dirname "${SYNC_LDAP_BIND_KEYSTOREPATH}"`
-	chown ${unix_user}:${unix_group} `dirname "${SYNC_LDAP_BIND_KEYSTOREPATH}"`
-	$JAVA_HOME/bin/java -cp "./lib/*" org.apache.ranger.credentialapi.buildks create $SYNC_LDAP_BIND_ALIAS -value $SYNC_LDAP_BIND_PASSWORD -provider jceks://file$SYNC_LDAP_BIND_KEYSTOREPATH
-    SYNC_LDAP_BIND_PASSWORD="_"
-  fi
-
-fi
-# END Grep configuration properties from install.properties
-
-# changing ownership for ranger-usersync install directory
-if [ -d ${INSTALL_DIR} ]; then
-    chown -R ${unix_user}:${unix_group} ${INSTALL_DIR}
-fi
-
-
-# Create $INSTALL_DIR/conf/unixauthservice.properties
-
-if [ ! -d conf ]; then
-    #Manual install
-    log "[I] Copying conf.dist conf"
-    mkdir conf
-    cp conf.dist/* conf
-    chown ${unix_user}:${unix_group} conf
-    chmod 750 conf
-fi
-if [ ! -f conf/cert/unixauthservice.jks ] 
-then
-    if [ ! -d conf/cert ]
-    then
-        mkdir -p conf/cert
-    fi
-    ${JAVA_HOME}/bin/keytool -genkeypair -keyalg RSA -alias selfsigned -keystore conf/cert/unixauthservice.jks \
-                             -keypass UnIx529p -storepass UnIx529p -validity 360 -keysize 2048 \
-                             -dname "cn=unixauthservice,ou=authenticator,o=mycompany,c=US" 
-
-	chmod o-rwx conf/cert/unixauthservice.jks
-	chgrp ${unix_group} conf/cert/unixauthservice.jks
-
-fi
-
-echo "export JAVA_HOME=${JAVA_HOME}" > conf/java_home.sh
-chmod a+rx conf/java_home.sh
-
-if [ ! -d logs ]; then
-    #Manual install
-    log "[I] Creating logs folder"
-    mkdir logs
-    chown ${unix_user}:${unix_group} logs
-fi
-
-
-CFG_FILE="${cdir}/conf/unixauthservice.properties"
-NEW_CFG_FILE=${cdir}/conf/unixauthservice.properties.tmp
-
-if [ -f  ${CFG_FILE}  ]
-then
-    sed \
-	-e "s|^\( *usergroupSync.policymanager.baseURL *=\).*|\1 ${POLICY_MGR_URL}|" \
-	-e "s|^\( *usergroupSync.unix.minUserId *=\).*|\1 ${MIN_UNIX_USER_ID_TO_SYNC}|" \
-	-e "s|^\( *usergroupSync.sleepTimeInMillisBetweenSyncCycle *=\).*|\1 ${SYNC_INTERVAL}|" \
-	-e "s|^\( *usergroupSync.source.impl.class *=\).*|\1 ${SYNC_SOURCE}|" \
-	-e "s|^\( *ldapGroupSync.ldapUrl *=\).*|\1 ${SYNC_LDAP_URL}|" \
-	-e "s|^\( *ldapGroupSync.ldapBindDn *=\).*|\1 ${SYNC_LDAP_BIND_DN}|" \
-	-e "s|^\( *ldapGroupSync.ldapBindPassword *=\).*|\1 ${SYNC_LDAP_BIND_PASSWORD}|" \
-	-e "s|^\( *ldapGroupSync.ldapBindKeystore *=\).*|\1 ${SYNC_LDAP_BIND_KEYSTOREPATH}|" \
-	-e "s|^\( *ldapGroupSync.ldapBindAlias *=\).*|\1 ${SYNC_LDAP_BIND_ALIAS}|" \
-	-e "s|^\( *ldapGroupSync.searchBase *=\).*|\1 ${SYNC_LDAP_SEARCH_BASE}|" \
-	-e "s|^\( *ldapGroupSync.userSearchScope *=\).*|\1 ${SYNC_LDAP_USER_SEARCH_SCOPE}|" \
-	-e "s|^\( *ldapGroupSync.userObjectClass *=\).*|\1 ${SYNC_LDAP_USER_OBJECT_CLASS}|" \
-	-e "s%^\( *ldapGroupSync.userSearchFilter *=\).*%\1 ${SYNC_LDAP_USER_SEARCH_FILTER}%" \
-	-e "s|^\( *ldapGroupSync.userNameAttribute *=\).*|\1 ${SYNC_LDAP_USER_NAME_ATTRIBUTE}|" \
-	-e "s|^\( *ldapGroupSync.userGroupNameAttribute *=\).*|\1 ${SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE}|" \
-	-e "s|^\( *ldapGroupSync.username.caseConversion *=\).*|\1 ${SYNC_LDAP_USERNAME_CASE_CONVERSION}|" \
-	-e "s|^\( *ldapGroupSync.groupname.caseConversion *=\).*|\1 ${SYNC_LDAP_GROUPNAME_CASE_CONVERSION}|" \
-	-e "s|^\( *logdir *=\).*|\1 ${logdir}|" \
-	-e "s|^\( *ldapGroupSync.pagedResultsEnabled *=\).*|\1 ${SYNC_PAGED_RESULTS_ENABLED}|" \
-	-e "s|^\( *ldapGroupSync.pagedResultsSize *=\).*|\1 ${SYNC_PAGED_RESULTS_SIZE}|" \
-	-e "s|^\( *ldapGroupSync.groupSearchEnabled *=\).*|\1 ${SYNC_GROUP_SEARCH_ENABLED}|" \
-	-e "s|^\( *ldapGroupSync.groupUserMapSyncEnabled *=\).*|\1 ${SYNC_GROUP_USER_MAP_SYNC_ENABLED}|" \
-	-e "s|^\( *ldapGroupSync.groupSearchBase *=\).*|\1 ${SYNC_GROUP_SEARCH_BASE}|" \
-	-e "s|^\( *ldapGroupSync.groupSearchScope *=\).*|\1 ${SYNC_GROUP_SEARCH_SCOPE}|" \
-	-e "s|^\( *ldapGroupSync.groupObjectClass *=\).*|\1 ${SYNC_GROUP_OBJECT_CLASS}|" \
-	-e "s|^\( *ldapGroupSync.groupSearchFilter *=\).*|\1 ${SYNC_GROUP_SEARCH_FILTER}|" \
-	-e "s|^\( *ldapGroupSync.groupNameAttribute *=\).*|\1 ${SYNC_GROUP_NAME_ATTRIBUTE}|" \
-	-e "s|^\( *ldapGroupSync.groupMemberAttributeName *=\).*|\1 ${SYNC_GROUP_MEMBER_ATTRIBUTE_NAME}|" \
-	${CFG_FILE} > ${NEW_CFG_FILE}
-
-    echo "<${logdir}> ${CFG_FILE} > ${NEW_CFG_FILE}"
-else
-    echo "ERROR: Required file, not found: ${CFG_FILE}, Aborting installation"
-    exit 8
-fi
-
-mv ${cdir}/conf/unixauthservice.properties ${cdir}/conf/unixauthservice.properties.${curDt}
-mv ${cdir}/conf/unixauthservice.properties.tmp ${cdir}/conf/unixauthservice.properties
-
-#END Create $INSTALL_DIR/conf/unixauthservice.properties
-
-#Update native exe
-#ranger-usersync/native/credValidator.uexe
-if [ -f ${cdir}/native/credValidator.uexe ]; then
-	chmod 750 ${cdir}/native/credValidator.uexe
-	chown root ${cdir}/native/credValidator.uexe
-	chgrp $unix_group ${cdir}/native/credValidator.uexe
-	chmod u+s ${cdir}/native/credValidator.uexe
-fi
-
-# Install the init.d process in /etc/init.d and create appropriate link to /etc/rc2.d folder
-if [ -d /etc/init.d ]
-then
-  cp ${cdir}/initd  /etc/init.d/${MOD_NAME}
-  chmod +x /etc/init.d/${MOD_NAME}
-
-  if [ -d /etc/rc2.d ]
-  then
-    echo "Creating boot script S99${MOD_NAME} in rc2.d directory .... "
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc2.d/S99${MOD_NAME}
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc2.d/K00${MOD_NAME}
-  fi
-  if [ -d /etc/rc3.d ]
-  then
-    echo "Creating boot script S99${MOD_NAME} in rc3.d directory .... "
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc3.d/S99${MOD_NAME}
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc3.d/K00${MOD_NAME}
-  fi
-
-  # SUSE has rc2.d and rc3.d under /etc/rc.d
-  if [ -d /etc/rc.d/rc2.d ]
-  then
-    echo "Creating boot script S99${MOD_NAME} in rc2.d directory .... "
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc.d/rc2.d/S99${MOD_NAME}
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc.d/rc2.d/K00${MOD_NAME}
-  fi
-  if [ -d /etc/rc.d/rc3.d ]
-  then
-    echo "Creating boot script S99${MOD_NAME} in rc3.d directory .... "
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc.d/rc3.d/S99${MOD_NAME}
-    ln -sf /etc/init.d/${MOD_NAME}  /etc/rc.d/rc3.d/K00${MOD_NAME}
-  fi
-
-fi
-
-# Create SoftLink of ranger-usersync-services to /usr/bin/
-ln -sf ${INSTALL_DIR}/ranger-usersync-services.sh /usr/bin/${MOD_NAME}
-chmod ug+rx /usr/bin/${MOD_NAME}
-
-# Start the service
-#service ${MOD_NAME} start
+./setup.py

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/templates/installprop2xml.properties
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/templates/installprop2xml.properties b/unixauthservice/scripts/templates/installprop2xml.properties
new file mode 100644
index 0000000..f102b52
--- /dev/null
+++ b/unixauthservice/scripts/templates/installprop2xml.properties
@@ -0,0 +1,50 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+POLICY_MGR_URL =  ranger.usersync.policymanager.baseURL
+MIN_UNIX_USER_ID_TO_SYNC = ranger.usersync.unix.minUserId
+SYNC_INTERVAL = ranger.usersync.sleeptimeinmillisbetweensynccycle
+SYNC_LDAP_URL = ranger.usersync.ldap.url
+SYNC_LDAP_BIND_DN = ranger.usersync.ldap.binddn
+SYNC_LDAP_BIND_PASSWORD = ranger.usersync.ldap.ldapbindpassword
+CRED_KEYSTORE_FILENAME= ranger.usersync.credstore.filename
+SYNC_LDAP_SEARCH_BASE = ranger.usersync.ldap.searchBase
+SYNC_LDAP_USER_SEARCH_BASE = ranger.usersync.ldap.user.searchbase
+SYNC_LDAP_USER_SEARCH_SCOPE = ranger.usersync.ldap.user.searchscope
+SYNC_LDAP_USER_OBJECT_CLASS = ranger.usersync.ldap.user.objectclass
+SYNC_LDAP_USER_SEARCH_FILTER = ranger.usersync.ldap.user.searchfilter
+SYNC_LDAP_USER_NAME_ATTRIBUTE = ranger.usersync.ldap.user.nameattribute
+SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE = ranger.usersync.ldap.user.groupnameattribute
+SYNC_LDAP_USERNAME_CASE_CONVERSION = ranger.usersync.ldap.username.caseconversion
+SYNC_LDAP_GROUPNAME_CASE_CONVERSION = ranger.usersync.ldap.groupname.caseconversion
+logdir=ranger.usersync.logdir
+SYNC_GROUP_SEARCH_ENABLED = ranger.usersync.group.searchenabled
+SYNC_GROUP_USER_MAP_SYNC_ENABLED = ranger.usersync.group.usermapsyncenabled
+SYNC_GROUP_SEARCH_BASE=ranger.usersync.group.searchbase
+SYNC_GROUP_SEARCH_SCOPE=ranger.usersync.group.searchscope
+SYNC_GROUP_OBJECT_CLASS=ranger.usersync.group.objectclass
+SYNC_LDAP_GROUP_SEARCH_FILTER=ranger.usersync.group.searchfilter
+SYNC_GROUP_NAME_ATTRIBUTE=ranger.usersync.group.nameattribute
+SYNC_GROUP_MEMBER_ATTRIBUTE_NAME=ranger.usersync.group.memberattributename
+SYNC_PAGED_RESULTS_ENABLED=ranger.usersync.pagedresultsenabled
+SYNC_PAGED_RESULTS_SIZE=ranger.usersync.pagedresultssize
+SYNC_SOURCE = SYNC_SOURCE
+unix_user   = unix_user
+unix_group  = unix_group
+AUTH_SSL_KEYSTORE_FILE = ranger.usersync.keystore.file
+AUTH_SSL_KEYSTORE_PASSWORD = ranger.usersync.keystore.password
+AUTH_SSL_TRUSTSTORE_FILE = ranger.usersync.truststore.file
+AUTH_SSL_TRUSTSTORE_PASSWORD = ranger.usersync.truststore.password
+AUTH_SSL_ENABLED = ranger.usersync.enabled

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/templates/ranger-ugsync-template.xml
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/templates/ranger-ugsync-template.xml b/unixauthservice/scripts/templates/ranger-ugsync-template.xml
new file mode 100644
index 0000000..15a04dc
--- /dev/null
+++ b/unixauthservice/scripts/templates/ranger-ugsync-template.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
+	<property>
+		<name>ranger.usersync.credstore.filename</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.enabled</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.memberattributename</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.nameattribute</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.objectclass</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.searchbase</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.searchenabled</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.searchfilter</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.searchscope</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.group.usermapsyncenabled</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.binddn</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.groupname.caseconversion</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.ldapbindpassword</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.searchBase</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.url</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.groupnameattribute</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.nameattribute</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.objectclass</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.searchbase</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.searchfilter</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.user.searchscope</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.username.caseconversion</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.logdir</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.pagedresultsenabled</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.pagedresultssize</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.passwordvalidator.path</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.policymanager.baseURL</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.policymanager.maxrecordsperapicall</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.policymanager.mockrun</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.port</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.sink.impl.class</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.sleeptimeinmillisbetweensynccycle</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.source.impl.class</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.ssl</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.unix.minUserId</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.keystore.file</name>
+		<value></value>
+	</property>
+	<property>
+		<name>ranger.usersync.truststore.file</name>
+		<value></value>
+	</property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/update_property.py
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/update_property.py b/unixauthservice/scripts/update_property.py
new file mode 100644
index 0000000..ba2aec8
--- /dev/null
+++ b/unixauthservice/scripts/update_property.py
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys
+import os
+from xml.etree import ElementTree as ET
+
+def write_properties_to_xml(xml_path, property_name='', property_value=''):
+	if(os.path.isfile(xml_path)):
+		xml = ET.parse(xml_path)
+		root = xml.getroot()
+		for child in root.findall('property'):
+			name = child.find("name").text.strip()
+			if name == property_name:
+				child.find("value").text = property_value
+		xml.write(xml_path)
+		return 0
+	else:
+		return -1
+
+
+
+if __name__ == '__main__':
+	if(len(sys.argv) > 1):
+		parameter_name = sys.argv[1] if len(sys.argv) > 1  else None
+		parameter_value = sys.argv[2] if len(sys.argv) > 2  else None
+		ranger_admin_site_xml_path = sys.argv[3] if len(sys.argv) > 3  else None
+		write_properties_to_xml(ranger_admin_site_xml_path,parameter_name,parameter_value)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
----------------------------------------------------------------------
diff --git a/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java b/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
index 01ad7f4..e9e5272 100644
--- a/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
+++ b/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
@@ -41,9 +41,15 @@ import javax.net.ssl.SSLServerSocket;
 import javax.net.ssl.SSLServerSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.log4j.Logger;
 import org.apache.ranger.usergroupsync.UserGroupSync;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class UnixAuthenticationService {
 
@@ -52,15 +58,15 @@ public class UnixAuthenticationService {
 	private static final String serviceName = "UnixAuthenticationService" ;
 	
 	private static final String SSL_ALGORITHM = "TLS" ;
-	private static final String REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM = "authServicePort" ;
-	private static final String SSL_KEYSTORE_PATH_PARAM = "keyStore" ;
-	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "keyStorePassword" ;
-	private static final String SSL_TRUSTSTORE_PATH_PARAM = "trustStore" ;
-	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "trustStorePassword" ;
-	private static final String CRED_VALIDATOR_PROG = "passwordValidatorPath" ;
+	private static final String REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM = "ranger.usersync.port" ;
+	private static final String SSL_KEYSTORE_PATH_PARAM = "ranger.usersync.keystore.file" ;
+	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.keystore.password" ;
+	private static final String SSL_TRUSTSTORE_PATH_PARAM = "ranger.usersync.truststore.file" ;
+	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.truststore.password" ;
+	private static final String CRED_VALIDATOR_PROG = "ranger.usersync.passwordvalidator.path" ;
 	private static final String ADMIN_USER_LIST_PARAM = "admin.users" ;
 	private static final String ADMIN_ROLE_LIST_PARAM = "admin.roleNames" ;
-	private static final String SSL_ENABLED_PARAM = "useSSL" ;
+	private static final String SSL_ENABLED_PARAM = "ranger.usersync.ssl" ;
 	
 	private String keyStorePath ;
 	private String keyStorePathPassword ;
@@ -127,11 +133,51 @@ public class UnixAuthenticationService {
 	//TODO: add more validation code
 	private void init() throws Throwable {
 		Properties prop = new Properties() ;
-		InputStream in = getFileInputStream("unixauthservice.properties") ;
+		InputStream in = getFileInputStream("ranger-ugsync-site.xml") ;
 
 		if (in != null) {
 			try {
-				prop.load(in);
+//				prop.load(in);
+				DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+						.newInstance();
+				xmlDocumentBuilderFactory.setIgnoringComments(true);
+				xmlDocumentBuilderFactory.setNamespaceAware(true);
+				DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+						.newDocumentBuilder();
+				Document xmlDocument = xmlDocumentBuilder.parse(in);
+				xmlDocument.getDocumentElement().normalize();
+
+				NodeList nList = xmlDocument
+						.getElementsByTagName("property");
+
+				for (int temp = 0; temp < nList.getLength(); temp++) {
+
+					Node nNode = nList.item(temp);
+
+					if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+						Element eElement = (Element) nNode;
+
+						String propertyName = "";
+						String propertyValue = "";
+						if (eElement.getElementsByTagName("name").item(
+								0) != null) {
+							propertyName = eElement
+									.getElementsByTagName("name")
+									.item(0).getTextContent().trim();
+						}
+						if (eElement.getElementsByTagName("value")
+								.item(0) != null) {
+							propertyValue = eElement
+									.getElementsByTagName("value")
+									.item(0).getTextContent().trim();
+						}
+
+						LOG.info("Adding Property:[" + propertyName + "] Value:"+ propertyValue);
+						prop.put(propertyName, propertyValue);
+
+					}
+				}
 			}
 			finally {
 				try {


[3/4] incubator-ranger git commit: RANGER-001 : ranger-site changes

Posted by sn...@apache.org.
RANGER-001 : ranger-site changes

Signed-off-by: sneethiraj <sn...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/11bb55ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/11bb55ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/11bb55ba

Branch: refs/heads/master
Commit: 11bb55ba23684293bb4c37b05b8bc19463c76141
Parents: 101d176
Author: Gautam Borad <gb...@gmail.com>
Authored: Tue Apr 28 17:48:42 2015 +0530
Committer: sneethiraj <sn...@apache.org>
Committed: Tue Apr 28 10:47:24 2015 -0400

----------------------------------------------------------------------
 .../ranger/server/tomcat/EmbeddedServer.java    | 302 +++++++-------
 .../server/tomcat/StopEmbeddedServer.java       |   6 +-
 security-admin/scripts/setup.sh                 | 269 +++++++------
 security-admin/scripts/update_property.py       |  40 ++
 .../java/org/apache/ranger/biz/AssetMgr.java    |   9 +-
 .../org/apache/ranger/biz/RangerBizUtil.java    |  19 +-
 .../java/org/apache/ranger/biz/XUserMgr.java    |   6 +-
 .../apache/ranger/common/PropertiesUtil.java    | 274 ++++++-------
 .../apache/ranger/common/RangerConfigUtil.java  |  24 +-
 .../org/apache/ranger/common/SearchUtil.java    |   7 +-
 .../org/apache/ranger/common/ServiceUtil.java   |   3 +-
 .../apache/ranger/common/XMLPropertiesUtil.java |  94 +++++
 .../java/org/apache/ranger/rest/AssetREST.java  |   2 +-
 .../handler/RangerAuthenticationProvider.java   | 272 +++++++++++++
 .../RangerAuthFailureHandler.java               |   3 +-
 .../RangerAuthSuccessHandler.java               |   3 +-
 .../RangerAuthenticationEntryPoint.java         |  15 +-
 .../ranger/service/RangerServiceService.java    |   2 +-
 .../apache/ranger/service/XAgentService.java    |   3 +-
 .../apache/ranger/service/XAssetService.java    |   2 +-
 .../apache/ranger/service/XGroupService.java    |   3 +-
 .../ranger/service/XGroupUserService.java       |   3 +-
 .../apache/ranger/service/XResourceService.java |   3 +-
 .../org/apache/ranger/service/XUserService.java |   9 +-
 .../java/org/apache/ranger/solr/SolrMgr.java    |   2 +-
 .../conf.dist/ranger-admin-default-site.xml     | 400 +++++++++++++++++++
 .../resources/conf.dist/ranger-admin-site.xml   | 165 ++++++++
 .../conf.dist/security-applicationContext.xml   |   5 +
 .../main/resources/conf.dist/xa_ldap.properties |  26 --
 .../resources/conf.dist/xa_system.properties    |  61 ---
 .../main/resources/sample.xa_system.properties  |  55 ---
 .../src/main/resources/xa_custom.properties     |  17 -
 .../src/main/resources/xa_default.properties    |  83 ----
 .../main/webapp/META-INF/applicationContext.xml |  72 ++--
 .../META-INF/contextXML/ad_bean_settings.xml    |   6 +-
 .../META-INF/contextXML/ldap_bean_settings.xml  |  13 +-
 security-admin/src/main/webapp/ajax_failure.jsp |   2 +-
 .../java/org/apache/ranger/biz/TestUserMgr.java |   2 +
 .../org/apache/ranger/biz/TestXUserMgr.java     |   2 +
 .../PasswordComparisonAuthenticator.java        | 137 +++++++
 src/main/assembly/admin-web.xml                 |   1 +
 src/main/assembly/usersync.xml                  |   9 +
 .../config/UserGroupSyncConfig.java             | 146 ++++---
 .../unix/jaas/RemoteUnixLoginModule.java        |  77 +++-
 .../conf.dist/ranger-ugsync-default.xml         |  60 +++
 .../conf.dist/unixauthservice.properties        | 248 ------------
 unixauthservice/scripts/install.properties      |   8 +-
 .../scripts/ranger-usersync-services.sh         |   8 +-
 unixauthservice/scripts/setup.py                | 397 ++++++++++++++++++
 unixauthservice/scripts/setup.sh                | 369 +----------------
 .../templates/installprop2xml.properties        |  50 +++
 .../templates/ranger-ugsync-template.xml        | 168 ++++++++
 unixauthservice/scripts/update_property.py      |  40 ++
 .../UnixAuthenticationService.java              |  64 ++-
 54 files changed, 2620 insertions(+), 1446 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
----------------------------------------------------------------------
diff --git a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
index b75dfe0..aa45ddd 100644
--- a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
+++ b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
@@ -17,108 +17,76 @@
  * under the License.
  */
 
- package org.apache.ranger.server.tomcat;
+package org.apache.ranger.server.tomcat;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
 import java.net.URL;
 import java.util.Date;
 import java.util.Properties;
 import java.util.logging.Logger;
 
 import javax.servlet.ServletException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.valves.AccessLogValve;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class EmbeddedServer {
 	
-	private static final Logger LOG = Logger.getLogger(EmbeddedServer.class.getName()) ;
+	private static final Logger LOG = Logger.getLogger(EmbeddedServer.class
+			.getName());
 	
-	private static final String DEFAULT_CONFIG_FILENAME = "ranger_webserver.properties" ;
+	private static final String DEFAULT_CONFIG_FILENAME = "ranger-admin-site.xml";
 	
-	private static final String DEFAULT_WEBAPPS_ROOT_FOLDER = "webapps" ;
+	private static final String DEFAULT_WEBAPPS_ROOT_FOLDER = "webapps";
 	
-	private static String configFile = DEFAULT_CONFIG_FILENAME ;
+	private static String configFile = DEFAULT_CONFIG_FILENAME;
 	
-	private Properties serverConfigProperties = new Properties() ;
+	private Properties serverConfigProperties = new Properties();
 
 	public static void main(String[] args) {
-		new EmbeddedServer(args).start() ;
+		new EmbeddedServer(args).start();
 	}
 	
-	
 	public EmbeddedServer(String[] args) {
 		if (args.length > 0) {
-			configFile = args[0] ;
-		}
-		initConfig() ;
-	}
-	
-	
-	private void initConfig() {
-		
-		String cfgFile =  getResourceFileName(configFile) ;
-		
-		serverConfigProperties.clear() ;
-		
-		InputStream in = null ;
-		try {
-			
-			in = new FileInputStream(cfgFile) ;
-			serverConfigProperties.load(in);
-		}
-		catch(FileNotFoundException fnf) {
-			LOG.severe("Unable to find config  file [" + cfgFile + "]");
-			fnf.printStackTrace(); 
-		}
-		catch(IOException ioe) {
-			LOG.severe("Unable to load config  file [" + cfgFile + "]");
-			ioe.printStackTrace(); 
+			configFile = args[0];
 		}
-		finally {
-			if (in != null) {
-				try {
-					in.close() ;
-				}
-				catch(IOException ioe) {
-					// Ignore IOE when the stream is closed.
-				}
-			}
-		}
-		serverConfigProperties.list(System.out);
+		loadRangerSiteConfig();
 	}
 	
-	public static int DEFAULT_SHUTDOWN_PORT = 6185 ;
-	public static String DEFAULT_SHUTDOWN_COMMAND = "SHUTDOWN" ;
-	
+	public static int DEFAULT_SHUTDOWN_PORT = 6185;
+	public static String DEFAULT_SHUTDOWN_COMMAND = "SHUTDOWN";
 	
 	public void start() {
 		Tomcat server = new Tomcat();
 		
-		String hostName = getConfig("service.host") ;
-		int serverPort = getIntConfig("http.service.port", 6181) ;
-		int sslPort = getIntConfig("https.service.port",-1) ;
-		int shutdownPort = getIntConfig("service.shutdownPort", DEFAULT_SHUTDOWN_PORT ) ;
-		String shutdownCommand = getConfig("service.shutdownCommand", DEFAULT_SHUTDOWN_COMMAND ) ;
+		String hostName = getConfig("ranger.service.host");
+		int serverPort = getIntConfig("ranger.service.http.port", 6181);
+		int sslPort = getIntConfig("ranger.service.https.port", -1);
+		int shutdownPort = getIntConfig("ranger.service.shutdown.port",DEFAULT_SHUTDOWN_PORT);
+		String shutdownCommand = getConfig("ranger.service.shutdown.command",DEFAULT_SHUTDOWN_COMMAND);
 
 		server.setHostname(hostName);
 		server.setPort(serverPort);
 		server.getServer().setPort(shutdownPort);
 		server.getServer().setShutdown(shutdownCommand);
 
-		boolean isHttpsEnabled = Boolean.valueOf(getConfig("https.attrib.SSLEnabled", "false"));
+		boolean isHttpsEnabled = Boolean.valueOf(getConfig("ranger.service.https.attrib.ssl.enabled", "false"));
 		boolean ajpEnabled = Boolean.valueOf(getConfig("ajp.enabled", "false"));
 
 		if (ajpEnabled) {
 
-			Connector ajpConnector = new Connector("org.apache.coyote.ajp.AjpNioProtocol");
+			Connector ajpConnector = new Connector(
+					"org.apache.coyote.ajp.AjpNioProtocol");
 			ajpConnector.setPort(serverPort);
 			ajpConnector.setProperty("protocol", "AJP/1.3");
 
@@ -128,19 +96,19 @@ public class EmbeddedServer {
 			server.setConnector(ajpConnector);
 			LOG.info("Created AJP Connector");
 		} else if ((sslPort > 0) && isHttpsEnabled) {
-			Connector ssl = new Connector() ;
-			ssl.setPort(sslPort) ;
+			Connector ssl = new Connector();
+			ssl.setPort(sslPort);
 			ssl.setSecure(true);
-			ssl.setScheme("https") ;
-			ssl.setAttribute("SSLEnabled", "true") ;
-			ssl.setAttribute("sslProtocol", getConfig("https.attrib.sslProtocol", "TLS")) ;
-			ssl.setAttribute("clientAuth", getConfig("https.attrib.clientAuth", "false"));
-			ssl.setAttribute("keyAlias", getConfig("https.attrib.keyAlias") ) ;
-			ssl.setAttribute("keystorePass", getConfig("https.attrib.keystorePass"));
-			ssl.setAttribute("keystoreFile",  getConfig("https.attrib.keystoreFile")) ;
+			ssl.setScheme("https");
+			ssl.setAttribute("SSLEnabled", "true");
+			ssl.setAttribute("sslProtocol", getConfig("ranger.service.https.attrib.ssl.protocol", "TLS"));
+			ssl.setAttribute("clientAuth", getConfig("ranger.service.https.attrib.client.auth", "false"));
+			ssl.setAttribute("keyAlias", getConfig("ranger.service.https.attrib.keystore.keyalias"));
+			ssl.setAttribute("keystorePass", getConfig("ranger.service.https.attrib.keystore.pass"));
+			ssl.setAttribute("keystoreFile", getConfig("ranger.service.https.attrib.keystore.file"));
 			
-			String enabledProtocols = "SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2" ;
-			ssl.setAttribute("sslEnabledProtocols", enabledProtocols ) ;
+			String enabledProtocols = "SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2";
+			ssl.setAttribute("sslEnabledProtocols", enabledProtocols);
 			
 			server.getService().addConnector(ssl); 
 
@@ -151,172 +119,226 @@ public class EmbeddedServer {
 			
 		}
 
+		File baseDir = new File(".");
 		
-		File baseDir = new File(".") ;
-		
-		File logDirectory = new File(baseDir, "logs") ;
-		if (! logDirectory.exists()) {
-			logDirectory.mkdirs() ;
+		File logDirectory = new File(baseDir, "logs");
+		if (!logDirectory.exists()) {
+			logDirectory.mkdirs();
 		}
 		
-		AccessLogValve valve = new AccessLogValve() ;
-		valve.setRotatable(true) ;
+		AccessLogValve valve = new AccessLogValve();
+		valve.setRotatable(true);
 		valve.setAsyncSupported(true);
 		valve.setBuffered(false);
 		valve.setEnabled(true);
-		valve.setFileDateFormat(getConfig("accesslog.dateformat","yyyy-MM-dd.HH")) ;
+		valve.setFileDateFormat(getConfig("ranger.accesslog.dateformat", "yyyy-MM-dd.HH"));
 		valve.setDirectory(logDirectory.getAbsolutePath());
 		valve.setRotatable(true);
 		valve.setSuffix(".log");
 		
-		String logPattern = getConfig("accesslog.pattern", "%h %l %u %t \"%r\" %s %b") ;
+		String logPattern = getConfig("ranger.accesslog.pattern", "%h %l %u %t \"%r\" %s %b");
 		valve.setPattern(logPattern);	
 				
 		server.getHost().getPipeline().addValve(valve);
 		
 		try {
-			String webapp_dir= getConfig("xa.webapp.dir");
-			if( webapp_dir == null || webapp_dir.trim().isEmpty()) {
-				//If webapp location property is not set, then let's dervice from catalina_base
+			String webapp_dir = getConfig("xa.webapp.dir");
+			if (webapp_dir == null || webapp_dir.trim().isEmpty()) {
+				// If webapp location property is not set, then let's derive
+				// from catalina_base
 				String catalina_base = getConfig("catalina.base");
-				if( catalina_base == null || catalina_base.trim().isEmpty()) {
-					LOG.severe("Tomcat Server failed to start: catalina.base and/or xa.webapp.dir is not set") ;
+				if (catalina_base == null || catalina_base.trim().isEmpty()) {
+					LOG.severe("Tomcat Server failed to start: catalina.base and/or xa.webapp.dir is not set");
 					System.exit(1);
 				}
 				webapp_dir = catalina_base + File.separator + "webapp";
-				LOG.info("Deriving webapp folder from catalina.base property. folder=" + webapp_dir);
+				LOG.info("Deriving webapp folder from catalina.base property. folder="
+						+ webapp_dir);
 			}
 			
-			String webContextName = getConfig("xa.webapp.contextName", "/")  ;
+			//String webContextName = getConfig("xa.webapp.contextName", "/");
+			String webContextName = getConfig("ranger.contextName", "/");
 			if (webContextName == null) {
-				webContextName = "/" ;
-			}
-			else if (! webContextName.startsWith("/")) {
-				LOG.info("Context Name [" + webContextName + "] is being loaded as [ /" + webContextName  + "]");
-				webContextName = "/" + webContextName ;
+				webContextName = "/";
+			} else if (!webContextName.startsWith("/")) {
+				LOG.info("Context Name [" + webContextName
+						+ "] is being loaded as [ /" + webContextName + "]");
+				webContextName = "/" + webContextName;
 			}
 			
-			File wad = new File (webapp_dir) ;
+			File wad = new File(webapp_dir);
 			if (wad.isDirectory()) {
-				LOG.info("Webapp file =" + webapp_dir + ", webAppName = " + webContextName);
-			}
-			else if (wad.isFile()) {
-				File webAppDir = new File(DEFAULT_WEBAPPS_ROOT_FOLDER) ;
-				if (! webAppDir.exists()) {
-					webAppDir.mkdirs() ;
+				LOG.info("Webapp file =" + webapp_dir + ", webAppName = "
+						+ webContextName);
+			} else if (wad.isFile()) {
+				File webAppDir = new File(DEFAULT_WEBAPPS_ROOT_FOLDER);
+				if (!webAppDir.exists()) {
+					webAppDir.mkdirs();
 				}
-				LOG.info("Webapp file =" + webapp_dir + ", webAppName = " + webContextName);
+				LOG.info("Webapp file =" + webapp_dir + ", webAppName = "
+						+ webContextName);
 			}
-			LOG.info("Adding webapp [" + webContextName + "] = path [" + webapp_dir + "] .....") ;
-			Context webappCtx = server.addWebapp(webContextName,  new File(webapp_dir).getAbsolutePath()) ;
-			webappCtx.init() ;
-			LOG.info("Finished init of webapp [" + webContextName + "] = path [" + webapp_dir + "].") ;
+			LOG.info("Adding webapp [" + webContextName + "] = path ["
+					+ webapp_dir + "] .....");
+			Context webappCtx = server.addWebapp(webContextName, new File(
+					webapp_dir).getAbsolutePath());
+			webappCtx.init();
+			LOG.info("Finished init of webapp [" + webContextName
+					+ "] = path [" + webapp_dir + "].");
 		} catch (ServletException e1) {
-			LOG.severe("Tomcat Server failed to add webapp:" + e1.toString()) ;
+			LOG.severe("Tomcat Server failed to add webapp:" + e1.toString());
 			e1.printStackTrace();
-		} catch(LifecycleException lce) {
-			LOG.severe("Tomcat Server failed to start webapp:" + lce.toString()) ;
+		} catch (LifecycleException lce) {
+			LOG.severe("Tomcat Server failed to start webapp:" + lce.toString());
 			lce.printStackTrace();
 		}
 				
 		try {
 			server.start(); 
 			server.getServer().await();
-			shutdownServer() ;			
+			shutdownServer();
 			
 		} catch (LifecycleException e) {
-			LOG.severe("Tomcat Server failed to start:" + e.toString()) ;
+			LOG.severe("Tomcat Server failed to start:" + e.toString());
 			e.printStackTrace(); 
 		} 
 	}
 	
-	
 	protected String getConfig(String key) {
-		String value = serverConfigProperties.getProperty(key) ;
-		if ( value == null || value.trim().isEmpty()) {
-			//Value not found in properties file, let's try to get from System's property
+		String value = serverConfigProperties.getProperty(key);
+		if (value == null || value.trim().isEmpty()) {
+			// Value not found in properties file, let's try to get from
+			// System's property
 			value = System.getProperty(key);
 		}
 		return value;
 	}
 	
 	protected String getConfig(String key, String defaultValue) {
-		String ret = getConfig(key) ;
+		String ret = getConfig(key);
 		if (ret == null) {
-			ret = defaultValue ;
+			ret = defaultValue;
 		}
 		return ret;
 	}
 	
 	protected int getIntConfig(String key, int defaultValue) {
-		int ret = 0 ;
-		String retStr = getConfig(key) ;
+		int ret = 0;
+		String retStr = getConfig(key);
 		if (retStr == null) {
-			ret = defaultValue ;
-		}
-		else {
-			ret = Integer.parseInt(retStr) ;
+			ret = defaultValue;
+		} else {
+			ret = Integer.parseInt(retStr);
 		}
 		return ret;
 	}
 	
 	private String getResourceFileName(String aResourceName) {
 		
-		String ret = aResourceName ;
+		String ret = aResourceName;
 		
-		ClassLoader cl = getClass().getClassLoader() ;
+		ClassLoader cl = getClass().getClassLoader();
 		
 		for (String path : new String[] { aResourceName, "/" + aResourceName }) {
 			
 			try {
-				URL lurl = cl.getResource(path) ;
+				URL lurl = cl.getResource(path);
 		
 				if (lurl != null) {
-					ret = lurl.getFile() ;
+					ret = lurl.getFile();
 				}
-			}
-			catch(Throwable t) {
+			} catch (Throwable t) {
 				ret = null;
 			}
 			if (ret != null) {
-				break ;
+				break;
 			}
 
 		}
 		
 		if (ret == null) {
-			ret = aResourceName ;
+			ret = aResourceName;
 		}
 		
-		return ret ;
+		return ret;
 		
 	}
 	
-	
 	public void shutdownServer() {
-		int timeWaitForShutdownInSeconds = getIntConfig("service.waitTimeForForceShutdownInSeconds", 0) ;
+		int timeWaitForShutdownInSeconds = getIntConfig(
+				"service.waitTimeForForceShutdownInSeconds", 0);
 		if (timeWaitForShutdownInSeconds > 0) {
-			long endTime = System.currentTimeMillis()  + (timeWaitForShutdownInSeconds * 1000L) ;
-			LOG.info("Will wait for all threads to shutdown gracefully. Final shutdown Time: " + new Date(endTime)) ;
+			long endTime = System.currentTimeMillis()
+					+ (timeWaitForShutdownInSeconds * 1000L);
+			LOG.info("Will wait for all threads to shutdown gracefully. Final shutdown Time: "
+					+ new Date(endTime));
 			while (System.currentTimeMillis() < endTime) {
-				int activeCount = Thread.activeCount() ;
+				int activeCount = Thread.activeCount();
 				if (activeCount == 0) {
 				    LOG.info("Number of active threads = " + activeCount + ".");
-					break ;
-				}
-				else {
-					LOG.info("Number of active threads = " + activeCount + ". Waiting for all threads to shutdown ...");
+					break;
+				} else {
+					LOG.info("Number of active threads = " + activeCount
+							+ ". Waiting for all threads to shutdown ...");
 					try {
 						Thread.sleep(5000L);
 					} catch (InterruptedException e) {
-						LOG.warning("shutdownServer process is interrupted with exception: " +  e);
-						break ;
+						LOG.warning("shutdownServer process is interrupted with exception: "
+								+ e);
+						break;
 					}
 				}
 			}
 		}
-	    LOG.info("Shuting down the Server.") ;
+		LOG.info("Shuting down the Server.");
 		System.exit(0);
 	}
 
+
+	public void loadRangerSiteConfig() {
+		String path = getResourceFileName(configFile);
+		try {
+			DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+					.newInstance();
+			xmlDocumentBuilderFactory.setIgnoringComments(true);
+			xmlDocumentBuilderFactory.setNamespaceAware(true);
+			DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+					.newDocumentBuilder();
+			Document xmlDocument = xmlDocumentBuilder.parse(new File(path));
+			xmlDocument.getDocumentElement().normalize();
+
+			NodeList nList = xmlDocument.getElementsByTagName("property");
+
+			for (int temp = 0; temp < nList.getLength(); temp++) {
+
+				Node nNode = nList.item(temp);
+
+				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+					Element eElement = (Element) nNode;
+
+					String propertyName = "";
+					String propertyValue = "";
+					if (eElement.getElementsByTagName("name").item(0) != null) {
+						propertyName = eElement.getElementsByTagName("name")
+								.item(0).getTextContent().trim();
+					}
+					if (eElement.getElementsByTagName("value").item(0) != null) {
+						propertyValue = eElement.getElementsByTagName("value")
+								.item(0).getTextContent().trim();
+					}
+
+					serverConfigProperties.put(propertyName, propertyValue);
+
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/StopEmbeddedServer.java
----------------------------------------------------------------------
diff --git a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/StopEmbeddedServer.java b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/StopEmbeddedServer.java
index 403547d..ef80f43 100644
--- a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/StopEmbeddedServer.java
+++ b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/StopEmbeddedServer.java
@@ -38,9 +38,8 @@ public class StopEmbeddedServer extends EmbeddedServer {
 		
 		try {
 			
-			int shutdownPort = getIntConfig("service.shutdownPort", DEFAULT_SHUTDOWN_PORT ) ;
-			
-			String shutdownCommand = getConfig("service.shutdownCommand", DEFAULT_SHUTDOWN_COMMAND ) ;
+			int shutdownPort = getIntConfig("ranger.service.shutdown.port", DEFAULT_SHUTDOWN_PORT ) ;
+			String shutdownCommand = getConfig("ranger.service.shutdown.command", DEFAULT_SHUTDOWN_COMMAND ) ;
 			
 			Socket sock = new Socket(SHUTDOWN_HOSTNAME,shutdownPort) ;
 			
@@ -58,5 +57,4 @@ public class StopEmbeddedServer extends EmbeddedServer {
 		}
 	}
 	
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/scripts/setup.sh
----------------------------------------------------------------------
diff --git a/security-admin/scripts/setup.sh b/security-admin/scripts/setup.sh
index c1b5658..3868ea2 100755
--- a/security-admin/scripts/setup.sh
+++ b/security-admin/scripts/setup.sh
@@ -115,6 +115,13 @@ updatePropertyToFile(){
 }
 
 
+#Update Properties to File
+#$1 -> propertyName $2 -> newPropertyValue $3 -> fileName
+updatePropertyToFilePy(){
+    python update_property.py $1 $2 $3
+    check_ret_status $? "Update property failed for: " $1
+}
+
 init_logfiles () {
     for f in $LOGFILES; do
         touch $f
@@ -744,152 +751,159 @@ update_properties() {
 	echo "export JAVA_HOME=${JAVA_HOME}" > ${WEBAPP_ROOT}/WEB-INF/classes/conf/java_home.sh
 	chmod a+rx ${WEBAPP_ROOT}/WEB-INF/classes/conf/java_home.sh
 
+	to_file_ranger=$app_home/WEB-INF/classes/conf/ranger-admin-site.xml
+	if test -f $to_file_ranger; then
+		log "[I] $to_file_ranger file found"
+	else
+		log "[E] $to_file_ranger does not exists" ; exit 1;
+    fi
 
-	to_file=$app_home/WEB-INF/classes/conf/xa_system.properties
-	if test -f $to_file; then
-		log "[I] $to_file file found"
+	to_file_default=$app_home/WEB-INF/classes/conf/ranger-admin-default-site.xml
+	if test -f $to_file_default; then
+		log "[I] $to_file_default file found"
 	else
-		log "[E] $to_file does not exists" ; exit 1;
+		log "[E] $to_file_default does not exists" ; exit 1;
     fi
+
 	if [ "${DB_FLAVOR}" == "MYSQL" ]
 	then
-		propertyName=jdbc.url
+		propertyName=ranger.jpa.jdbc.url
 		newPropertyValue="jdbc:log4jdbc:mysql://${DB_HOST}/${db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.url
+		propertyName=ranger.jpa.audit.jdbc.url
 		newPropertyValue="jdbc:log4jdbc:mysql://${DB_HOST}/${audit_db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=jdbc.dialect
+		propertyName=ranger.jpa.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.MySQLPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=auditDB.jdbc.dialect
+		propertyName=ranger.jpa.audit.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.MySQLPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=jdbc.driver
+		propertyName=ranger.jpa.jdbc.driver
 		newPropertyValue="net.sf.log4jdbc.DriverSpy"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.driver
+		propertyName=ranger.jpa.audit.jdbc.driver
 		newPropertyValue="net.sf.log4jdbc.DriverSpy"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 	if [ "${DB_FLAVOR}" == "ORACLE" ]
 	then
-		propertyName=jdbc.url
+		propertyName=ranger.jpa.jdbc.url
 		newPropertyValue="jdbc:oracle:thin:\@//${DB_HOST}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.url
+		propertyName=ranger.jpa.audit.jdbc.url
 		newPropertyValue="jdbc:oracle:thin:\@//${DB_HOST}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=jdbc.dialect
+		propertyName=ranger.jpa.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.OraclePlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=auditDB.jdbc.dialect
+		propertyName=ranger.jpa.audit.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.OraclePlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=jdbc.driver
+		propertyName=ranger.jpa.jdbc.driver
 		newPropertyValue="oracle.jdbc.OracleDriver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.driver
+		propertyName=ranger.jpa.audit.jdbc.driver
 		newPropertyValue="oracle.jdbc.OracleDriver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 	if [ "${DB_FLAVOR}" == "POSTGRES" ]
 	then
-		propertyName=jdbc.url
+		propertyName=ranger.jpa.jdbc.url
 		newPropertyValue="jdbc:postgresql://${DB_HOST}/${db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.url
+		propertyName=ranger.jpa.audit.jdbc.url
 		newPropertyValue="jdbc:postgresql://${DB_HOST}/${audit_db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=jdbc.dialect
+		propertyName=ranger.jpa.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.PostgreSQLPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=auditDB.jdbc.dialect
+		propertyName=ranger.jpa.audit.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.PostgreSQLPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=jdbc.driver
+		propertyName=ranger.jpa.jdbc.driver
 		newPropertyValue="org.postgresql.Driver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.driver
+		propertyName=ranger.jpa.audit.jdbc.driver
 		newPropertyValue="org.postgresql.Driver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 	if [ "${DB_FLAVOR}" == "SQLSERVER" ]
 	then
-		propertyName=jdbc.url
+		propertyName=ranger.jpa.jdbc.url
 		newPropertyValue="jdbc:sqlserver://${DB_HOST};databaseName=${db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.url
+		propertyName=ranger.jpa.audit.jdbc.url
 		newPropertyValue="jdbc:sqlserver://${DB_HOST};databaseName=${audit_db_name}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=jdbc.dialect
+		propertyName=ranger.jpa.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.SQLServerPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=auditDB.jdbc.dialect
+		propertyName=ranger.jpa.jdbc.dialect
 		newPropertyValue="org.eclipse.persistence.platform.database.SQLServerPlatform"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=jdbc.driver
+		propertyName=ranger.jpa.jdbc.driver
 		newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=auditDB.jdbc.driver
+		propertyName=ranger.jpa.audit.jdbc.driver
 		newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 
 	if [ "${audit_store}" == "solr" ]
         then
-                propertyName=xa.audit.solr.url
+			propertyName=ranger.solr.url
                 newPropertyValue=${audit_solr_url}
-                updatePropertyToFile $propertyName $newPropertyValue $to_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
         fi
 
-        propertyName=xa.audit.store
+	propertyName=ranger.audit.source.type
         newPropertyValue=${audit_store}
-        updatePropertyToFile $propertyName $newPropertyValue $to_file
+	updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
 
-	propertyName=xa.webapp.url.root
+	propertyName=ranger.externalurl
 	newPropertyValue="${policymgr_external_url}"
-	updatePropertyToFile $propertyName $newPropertyValue $to_file
+	updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-	propertyName=http.enabled
+	propertyName=ranger.service.http.enabled
 	newPropertyValue="${policymgr_http_enabled}"
-	updatePropertyToFile $propertyName $newPropertyValue $to_file
+	updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-	propertyName=jdbc.user
+	propertyName=ranger.jpa.jdbc.user
 	newPropertyValue="${db_user}"
-	updatePropertyToFile $propertyName $newPropertyValue $to_file
+	updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-	propertyName=auditDB.jdbc.user
+	propertyName=ranger.jpa.audit.jdbc.user
 	newPropertyValue="${audit_db_user}"
-	updatePropertyToFile $propertyName $newPropertyValue $to_file
+	updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	##########
 
 	keystore="${cred_keystore_filename}"
 
-	echo "Starting configuration for XA DB credentials:"
+	echo "Starting configuration for Ranger DB credentials:"
 
-	db_password_alias=policyDB.jdbc.password
+	db_password_alias=ranger.db.password
 
 	if [ "${keystore}" != "" ]
 	then
@@ -897,21 +911,25 @@ update_properties() {
 
 		$JAVA_HOME/bin/java -cp "cred/lib/*" org.apache.ranger.credentialapi.buildks create "$db_password_alias" -value "$db_password" -provider jceks://file$keystore
 
-		propertyName=xaDB.jdbc.credential.alias
+		propertyName=ranger.credential.provider.path
+		newPropertyValue="${keystore}"
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
+
+		propertyName=ranger.jpa.jdbc.credential.alias
 		newPropertyValue="${db_password_alias}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 
-		propertyName=xaDB.jdbc.credential.provider.path
+		propertyName=ranger.credential.provider.path
 		newPropertyValue="${keystore}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 
-		propertyName=jdbc.password
+		propertyName=ranger.jpa.jdbc.password
 		newPropertyValue="_"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	else
-		propertyName=jdbc.password
+		propertyName=ranger.jpa.jdbc.password
 		newPropertyValue="${db_password}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 
 	if test -f $keystore; then
@@ -919,16 +937,15 @@ update_properties() {
 		chown -R ${unix_user}:${unix_group} ${keystore}
 		chmod 640 ${keystore}
 	else
-		#echo "$keystore not found. so clear text password"
-		propertyName=jdbc.password
+		propertyName=ranger.jpa.jdbc.password
 		newPropertyValue="${db_password}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	fi
 
 	###########
 	if [ "${audit_store}" != "solr" ]
 	then
-	    audit_db_password_alias=auditDB.jdbc.password
+	    audit_db_password_alias=ranger.auditdb.password
 
 	    echo "Starting configuration for Audit DB credentials:"
 
@@ -936,21 +953,23 @@ update_properties() {
 	    then
 		$JAVA_HOME/bin/java -cp "cred/lib/*" org.apache.ranger.credentialapi.buildks create "$audit_db_password_alias" -value "$audit_db_password" -provider jceks://file$keystore
 
-		propertyName=auditDB.jdbc.credential.alias
+			propertyName=ranger.jpa.audit.jdbc.credential.alias
 		newPropertyValue="${audit_db_password_alias}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $to_file_default
 		
-		propertyName=auditDB.jdbc.credential.provider.path
-		newPropertyValue="${keystore}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+			#Use the same provider file for both audit/admin db
+	#		propertyName=audit.jdbc.credential.provider.path
+			#propertyName=ranger.credential.provider.path
+			#newPropertyValue="${keystore}"
+			#updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 		
-		propertyName=auditDB.jdbc.password
+			propertyName=ranger.jpa.audit.jdbc.password
 		newPropertyValue="_"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	    else
-		propertyName=auditDB.jdbc.password
+			propertyName=ranger.jpa.audit.jdbc.password
 		newPropertyValue="${audit_db_password}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	    fi
 
 	    if test -f $keystore; then
@@ -958,9 +977,9 @@ update_properties() {
 		#echo "$keystore found."
 	    else
 		#echo "$keystore not found. so use clear text password"
-		propertyName=auditDB.jdbc.password
+			propertyName=ranger.jpa.audit.jdbc.password
 		newPropertyValue="${audit_db_password}"
-		updatePropertyToFile $propertyName $newPropertyValue $to_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $to_file_ranger
 	    fi
 	fi
 }
@@ -1148,14 +1167,23 @@ do_unixauth_setup() {
 
 	cp ./unixauth-config/*  ${RANGER_JAAS_CONF_DIR}
 
-	cat unixauth-config/unixauth.properties | \
-			grep -v '^remoteLoginEnabled=' | \
-			grep -v '^authServiceHostName=' | \
-			grep -v '^authServicePort=' > ${RANGER_JAAS_CONF_DIR}/unixauth.properties
+    ldap_file=$app_home/WEB-INF/classes/conf/ranger-admin-site.xml
+    if test -f $ldap_file; then
+	log "[I] $ldap_file file found"
+        propertyName=ranger.unixauth.remote.login.enabled
+        newPropertyValue="${remoteLoginEnabled}"
+        updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-	echo "remoteLoginEnabled=${remoteLoginEnabled}"   >> ${RANGER_JAAS_CONF_DIR}/unixauth.properties
-	echo "authServiceHostName=${authServiceHostName}" >> ${RANGER_JAAS_CONF_DIR}/unixauth.properties
-	echo "authServicePort=${authServicePort}"         >> ${RANGER_JAAS_CONF_DIR}/unixauth.properties
+        propertyName=ranger.unixauth.service.hostname
+        newPropertyValue="${authServiceHostName}"
+        updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
+
+        propertyName=ranger.unixauth.service.port
+        newPropertyValue="${authServicePort}"
+        updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
+	else
+		log "[E] $ldap_file does not exists" ; exit 1;
+	fi
 
 	owner=ranger
 	group=ranger
@@ -1170,33 +1198,39 @@ do_authentication_setup(){
     if [ $authentication_method = "LDAP" ] ; then
 	log "[I] Loading LDAP attributes and properties";
 		newPropertyValue=''
-		ldap_file=$app_home/WEB-INF/classes/conf/xa_ldap.properties
+		ldap_file=$app_home/WEB-INF/classes/conf/ranger-admin-site.xml
 		if test -f $ldap_file; then
 			log "[I] $ldap_file file found"
-			propertyName=xa_ldap_url
+#			propertyName=xa_ldap_url
+			propertyName=ranger.ldap.url
 			newPropertyValue="${xa_ldap_url}"
 
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=xa_ldap_userDNpattern
+#			propertyName=xa_ldap_userDNpattern
+			propertyName=ranger.ldap.user.dnpattern
 			newPropertyValue="${xa_ldap_userDNpattern}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=xa_ldap_groupSearchBase
+#			propertyName=xa_ldap_groupSearchBase
+			propertyName=ranger.ldap.group.searchbase
 			newPropertyValue="${xa_ldap_groupSearchBase}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=xa_ldap_groupSearchFilter
+#			propertyName=xa_ldap_groupSearchFilter
+			propertyName=ranger.ldap.group.searchfilter
 			newPropertyValue="${xa_ldap_groupSearchFilter}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=xa_ldap_groupRoleAttribute
+#			propertyName=xa_ldap_groupRoleAttribute
+			propertyName=ranger.ldap.group.roleattribute
 			newPropertyValue="${xa_ldap_groupRoleAttribute}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=authentication_method
+#			propertyName=authentication_method
+			propertyName=ranger.authentication.method
 			newPropertyValue="${authentication_method}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 		else
 			log "[E] $ldap_file does not exists" ; exit 1;
 
@@ -1205,20 +1239,23 @@ do_authentication_setup(){
     if [ $authentication_method = "ACTIVE_DIRECTORY" ] ; then
 	log "[I] Loading ACTIVE DIRECTORY attributes and properties";
 		newPropertyValue=''
-		ldap_file=$app_home/WEB-INF/classes/conf/xa_ldap.properties
+		ldap_file=$app_home/WEB-INF/classes/conf/ranger-admin-site.xml
 		if test -f $ldap_file; then
 			log "[I] $ldap_file file found"
-			propertyName=xa_ldap_ad_url
+#			propertyName=xa_ldap_ad_url
+			propertyName=ranger.ldap.ad.url
 			newPropertyValue="${xa_ldap_ad_url}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=xa_ldap_ad_domain
+#			propertyName=xa_ldap_ad_domain
+			propertyName=ranger.ldap.ad.domain
 			newPropertyValue="${xa_ldap_ad_domain}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 
-			propertyName=authentication_method
+#			propertyName=authentication_method
+			propertyName=ranger.authentication.method
 			newPropertyValue="${authentication_method}"
-			updatePropertyToFile $propertyName $newPropertyValue $ldap_file
+			updatePropertyToFilePy $propertyName $newPropertyValue $ldap_file
 		else
 			log "[E] $ldap_file does not exists" ; exit 1;
 		fi

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/scripts/update_property.py
----------------------------------------------------------------------
diff --git a/security-admin/scripts/update_property.py b/security-admin/scripts/update_property.py
new file mode 100644
index 0000000..ba2aec8
--- /dev/null
+++ b/security-admin/scripts/update_property.py
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys
+import os
+from xml.etree import ElementTree as ET
+
+def write_properties_to_xml(xml_path, property_name='', property_value=''):
+	if(os.path.isfile(xml_path)):
+		xml = ET.parse(xml_path)
+		root = xml.getroot()
+		for child in root.findall('property'):
+			name = child.find("name").text.strip()
+			if name == property_name:
+				child.find("value").text = property_value
+		xml.write(xml_path)
+		return 0
+	else:
+		return -1
+
+
+
+if __name__ == '__main__':
+	if(len(sys.argv) > 1):
+		parameter_name = sys.argv[1] if len(sys.argv) > 1  else None
+		parameter_value = sys.argv[2] if len(sys.argv) > 2  else None
+		ranger_admin_site_xml_path = sys.argv[3] if len(sys.argv) > 3  else None
+		write_properties_to_xml(ranger_admin_site_xml_path,parameter_name,parameter_value)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index a838d8e..ecb3541 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -1168,8 +1168,7 @@ public class AssetMgr extends AssetMgrBase {
 			HashMap<String, String> configMap = (HashMap<String, String>) jsonUtil
 					.jsonToMap(newConfig);
 			String password = configMap.get("password");
-			String hiddenPasswordString = PropertiesUtil.getProperty(
-					"xa.password.hidden", "*****");
+			String hiddenPasswordString = PropertiesUtil.getProperty("ranger.password.hidden", "*****");
 			if (password != null && !password.equals(hiddenPasswordString)) {
 				String defaultConfig = vXAsset.getConfig();
 				defaultConfig=xAssetService.getConfigWithEncryptedPassword(defaultConfig,true);
@@ -1690,13 +1689,11 @@ public class AssetMgr extends AssetMgrBase {
 				.execute(new TransactionCallback<Object>() {
 					public Object doInTransaction(TransactionStatus status) {
 						if (xXPolicyExportAudit.getHttpRetCode() == HttpServletResponse.SC_NOT_MODIFIED) {
-							boolean logNotModified = PropertiesUtil
-									.getBooleanProperty(
-											"xa.log.SC_NOT_MODIFIED", false);
+							boolean logNotModified = PropertiesUtil.getBooleanProperty("ranger.log.SC_NOT_MODIFIED", false);
 							if (!logNotModified) {
 								logger.debug("Not logging HttpServletResponse."
 										+ "SC_NOT_MODIFIED, to enable, update "
-										+ ": xa.log.SC_NOT_MODIFIED");
+										+ ": ranger.log.SC_NOT_MODIFIED");
 								return null;
 							}
 						}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 0ab9d17..f4705d3 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
@@ -97,20 +97,17 @@ public class RangerBizUtil {
 
 	String auditDBType = AUDIT_STORE_RDBMS;
 
-	static String fileSeparator = PropertiesUtil.getProperty(
-			"xa.file.separator", "/");
+	static String fileSeparator = PropertiesUtil.getProperty("ranger.file.separator", "/");
 
 	public RangerBizUtil() {
-		maxFirstNameLength = Integer.parseInt(PropertiesUtil.getProperty(
-				"xa.user.firstname.maxlength", "16"));
-		maxDisplayNameLength = PropertiesUtil.getIntProperty(
-				"xa.bookmark.name.maxlen", maxDisplayNameLength);
+		maxFirstNameLength = Integer.parseInt(PropertiesUtil.getProperty("ranger.user.firstname.maxlength", "16"));
+		maxDisplayNameLength = PropertiesUtil.getIntProperty("ranger.bookmark.name.maxlen", maxDisplayNameLength);
 
 		groupEditableClasses = new HashSet<Class<?>>(
 				Arrays.asList(groupEditableClassesList));
-		enableResourceAccessControl = PropertiesUtil.getBooleanProperty(
-				"xa.resource.accessControl.enabled", true);
-		auditDBType = PropertiesUtil.getProperty("xa.audit.store",
+		enableResourceAccessControl = PropertiesUtil.getBooleanProperty("ranger.resource.accessControl.enabled", true);
+
+		auditDBType = PropertiesUtil.getProperty("ranger.audit.source.type",
 				auditDBType).toLowerCase();
 
 		logger.info("Audit datasource is " + auditDBType);
@@ -1340,7 +1337,7 @@ public class RangerBizUtil {
 
 		dbFlavor = PropertiesUtil.getProperty("xa.db.flavor");
 		if (dbFlavor == null || dbFlavor.trim().isEmpty()) {
-			dbFlavor = PropertiesUtil.getProperty("jdbc.dialect");
+			dbFlavor = PropertiesUtil.getProperty("ranger.jpa.jdbc.dialect");
 			dbFlavorPropFound = false;
 		}
 
@@ -1363,7 +1360,7 @@ public class RangerBizUtil {
 				}
 			}
 		} else {
-			logger.error("Property : xa.db.flavor or jdbc.dialect, not found");
+			logger.error("Property : xa.db.flavor or ranger.jpa.jdbc.dialect, not found");
 			return AppConstants.DB_FLAVOR_UNKNOWN;
 		}
 	}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 750129f..e676bf6 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
@@ -229,8 +229,7 @@ public class XUserMgr extends XUserMgrBase {
 		List<XXTrxLog> trxLogList = xUserService.getTransactionLog(
 				createdXUser, "create");
 
-		String hiddenPassword = PropertiesUtil.getProperty(
-				"xa.password.hidden", "*****");
+		String hiddenPassword = PropertiesUtil.getProperty("ranger.password.hidden", "*****");
 		createdXUser.setPassword(hiddenPassword);
 
 		Collection<Long> groupIdList = vXUser.getGroupIdList();
@@ -380,8 +379,7 @@ public class XUserMgr extends XUserMgrBase {
 		vXPortalUser.setPublicScreenName(vXUser.getFirstName() + " "
 				+ vXUser.getLastName());
 		vXPortalUser.setUserSource(vXUser.getUserSource());
-		String hiddenPasswordString = PropertiesUtil.getProperty(
-				"xa.password.hidden", "*****");
+		String hiddenPasswordString = PropertiesUtil.getProperty("ranger.password.hidden", "*****");
 		String password = vXUser.getPassword();
 		if (oldUserProfile != null && password != null
 				&& password.equals(hiddenPasswordString)) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java b/security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java
index 2901b0f..1a270a7 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/PropertiesUtil.java
@@ -17,12 +17,14 @@
  * under the License.
  */
 
- /**
- *
- */
-package org.apache.ranger.common;
-
+ /**
+ *
+ */
+package org.apache.ranger.common;
+
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -32,133 +34,135 @@ import org.apache.ranger.credentialapi.CredentialReader;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-
-
-
-public class PropertiesUtil extends PropertyPlaceholderConfigurer {
-    private static Map<String, String> propertiesMap = new HashMap<String, String>();
-    private static Logger logger = Logger.getLogger(PropertiesUtil.class);
-    private PropertiesUtil() {
-
-    }
-
-    @Override
-    protected void processProperties(
-	    ConfigurableListableBeanFactory beanFactory, Properties props)
-	    throws BeansException {
-    	
-    // First let's add the system properties
-	Set<Object> keySet = System.getProperties().keySet();
-	for (Object key : keySet) {
-	    String keyStr = key.toString();
-	    propertiesMap.put(keyStr, System.getProperties()
-		    .getProperty(keyStr).trim());
-	}
-	
-	// Let's add our properties now
-	keySet = props.keySet();
-	for (Object key : keySet) {
-	    String keyStr = key.toString();
-	    propertiesMap.put(keyStr, props.getProperty(keyStr).trim());
-	}
-	
-	//update credential from keystore
-	if(propertiesMap!=null && propertiesMap.containsKey("xaDB.jdbc.credential.provider.path") && propertiesMap.containsKey("xaDB.jdbc.credential.alias")){	
-		String path=propertiesMap.get("xaDB.jdbc.credential.provider.path");
-		String alias=propertiesMap.get("xaDB.jdbc.credential.alias");
-		if(path!=null && alias!=null){
-			String xaDBPassword=CredentialReader.getDecryptedString(path.trim(),alias.trim());		
-			if(xaDBPassword!=null&& !xaDBPassword.trim().isEmpty() && 
-					!xaDBPassword.trim().equalsIgnoreCase("none")){
-				propertiesMap.put("jdbc.password", xaDBPassword);
-				props.put("jdbc.password", xaDBPassword);
-			}else{
-				logger.info("Credential keystore password not applied for XA DB; clear text password shall be applicable");				
-			}
-		}
-	}
-	if(propertiesMap!=null && propertiesMap.containsKey("auditDB.jdbc.credential.provider.path") && propertiesMap.containsKey("auditDB.jdbc.credential.alias")){
-		String path=propertiesMap.get("auditDB.jdbc.credential.provider.path");
-		String alias=propertiesMap.get("auditDB.jdbc.credential.alias");
-		if(path!=null && alias!=null){
-			String auditDBPassword=CredentialReader.getDecryptedString(path.trim(), alias.trim());
-			if(auditDBPassword!=null&& !auditDBPassword.trim().isEmpty() && 
-					!auditDBPassword.trim().equalsIgnoreCase("none")){
-				propertiesMap.put("auditDB.jdbc.password", auditDBPassword);
-				props.put("auditDB.jdbc.password", auditDBPassword);
-			}else{
-				logger.info("Credential keystore password not applied for Audit DB; clear text password shall be applicable");
-			}
-		}		
-	}	
-	super.processProperties(beanFactory, props);
-    }
-
-    public static String getProperty(String key, String defaultValue) {
-	if (key == null) {
-	    return null;
-	}
-	String rtrnVal = propertiesMap.get(key);
-	if (rtrnVal == null) {
-	    rtrnVal = defaultValue;
-	}
-	return rtrnVal;
-    }
-
-    public static String getProperty(String key) {
-	if (key == null) {
-	    return null;
-	}
-	return propertiesMap.get(key);
-    }
-
-    public static String[] getPropertyStringList(String key) {
-	if (key == null) {
-	    return null;
-	}
-	String value = propertiesMap.get(key);
-	if (value != null) {
-	    String[] splitValues = value.split(",");
-	    String[] returnValues = new String[splitValues.length];
-	    for (int i = 0; i < splitValues.length; i++) {
-		returnValues[i] = splitValues[i].trim();
-	    }
-	    return returnValues;
-	} else {
-	    return new String[0];
-	}
-    }
-
-    public static Integer getIntProperty(String key, int defaultValue) {
-	if (key == null) {
-	    return null;
-	}
-	String rtrnVal = propertiesMap.get(key);
-	if (rtrnVal == null) {
-	    return defaultValue;
-	}
-	return Integer.valueOf(rtrnVal);
-    }
-
-    public static Integer getIntProperty(String key) {
-	if (key == null) {
-	    return null;
-	}
-	String rtrnVal = propertiesMap.get(key);
-	if (rtrnVal == null) {
-	    return null;
-	}
-	return Integer.valueOf(rtrnVal);
-    }
-
-    public static boolean getBooleanProperty(String key, boolean defaultValue) {
-	if (key == null) {
-	    return defaultValue;
-	}
-	String value = getProperty(key);
-	if (value == null) {
-	    return defaultValue;
-	}
-	return Boolean.parseBoolean(value);
-    }
-}
+
+
+
+public class PropertiesUtil extends PropertyPlaceholderConfigurer {
+    private static Map<String, String> propertiesMap = new HashMap<String, String>();
+    private static Logger logger = Logger.getLogger(PropertiesUtil.class);
+    protected List<String> xmlPropertyConfigurer  = new ArrayList<String>();
+
+    private PropertiesUtil() {
+
+    }
+
+    @Override
+    protected void processProperties(
+	    ConfigurableListableBeanFactory beanFactory, Properties props)
+	    throws BeansException {
+
+    // First let's add the system properties
+	Set<Object> keySet = System.getProperties().keySet();
+	for (Object key : keySet) {
+	    String keyStr = key.toString();
+	    propertiesMap.put(keyStr, System.getProperties()
+		    .getProperty(keyStr).trim());
+	}
+
+	// Let's add our properties now
+	keySet = props.keySet();
+	for (Object key : keySet) {
+	    String keyStr = key.toString();
+	    propertiesMap.put(keyStr, props.getProperty(keyStr).trim());
+	}
+
+	//update credential from keystore
+	if(propertiesMap!=null && propertiesMap.containsKey("ranger.credential.provider.path") && propertiesMap.containsKey("ranger.jpa.jdbc.credential.alias")){
+		String path=propertiesMap.get("ranger.credential.provider.path");
+		String alias=propertiesMap.get("ranger.jpa.jdbc.credential.alias");
+		if(path!=null && alias!=null){
+			String xaDBPassword=CredentialReader.getDecryptedString(path.trim(),alias.trim());
+			if(xaDBPassword!=null&& !xaDBPassword.trim().isEmpty() &&
+					!xaDBPassword.trim().equalsIgnoreCase("none")){
+				propertiesMap.put("ranger.jpa.jdbc.password", xaDBPassword);
+				props.put("ranger.jpa.jdbc.password", xaDBPassword);
+			}else{
+				logger.info("Credential keystore password not applied for XA DB; clear text password shall be applicable");
+			}
+		}
+	}
+	if(propertiesMap!=null && propertiesMap.containsKey("ranger.credential.provider.path") && propertiesMap.containsKey("ranger.jpa.audit.jdbc.credential.alias")){
+		String path=propertiesMap.get("ranger.credential.provider.path");
+		String alias=propertiesMap.get("ranger.jpa.audit.jdbc.credential.alias");
+		if(path!=null && alias!=null){
+			String auditDBPassword=CredentialReader.getDecryptedString(path.trim(), alias.trim());
+			if(auditDBPassword!=null&& !auditDBPassword.trim().isEmpty() &&
+					!auditDBPassword.trim().equalsIgnoreCase("none")){
+				propertiesMap.put("ranger.jpa.audit.jdbc.password", auditDBPassword);
+				props.put("ranger.jpa.audit.jdbc.password", auditDBPassword);
+			}else{
+				logger.info("Credential keystore password not applied for Audit DB; clear text password shall be applicable");
+			}
+		}
+	}
+	super.processProperties(beanFactory, props);
+    }
+
+    public static String getProperty(String key, String defaultValue) {
+	if (key == null) {
+	    return null;
+	}
+	String rtrnVal = propertiesMap.get(key);
+	if (rtrnVal == null) {
+	    rtrnVal = defaultValue;
+	}
+	return rtrnVal;
+    }
+
+    public static String getProperty(String key) {
+	if (key == null) {
+	    return null;
+	}
+	return propertiesMap.get(key);
+    }
+
+    public static String[] getPropertyStringList(String key) {
+	if (key == null) {
+	    return null;
+	}
+	String value = propertiesMap.get(key);
+	if (value != null) {
+	    String[] splitValues = value.split(",");
+	    String[] returnValues = new String[splitValues.length];
+	    for (int i = 0; i < splitValues.length; i++) {
+		returnValues[i] = splitValues[i].trim();
+	    }
+	    return returnValues;
+	} else {
+	    return new String[0];
+	}
+    }
+
+    public static Integer getIntProperty(String key, int defaultValue) {
+	if (key == null) {
+	    return null;
+	}
+	String rtrnVal = propertiesMap.get(key);
+	if (rtrnVal == null) {
+	    return defaultValue;
+	}
+	return Integer.valueOf(rtrnVal);
+    }
+
+    public static Integer getIntProperty(String key) {
+	if (key == null) {
+	    return null;
+	}
+	String rtrnVal = propertiesMap.get(key);
+	if (rtrnVal == null) {
+	    return null;
+	}
+	return Integer.valueOf(rtrnVal);
+    }
+
+    public static boolean getBooleanProperty(String key, boolean defaultValue) {
+	if (key == null) {
+	    return defaultValue;
+	}
+	String value = getProperty(key);
+	if (value == null) {
+	    return defaultValue;
+	}
+	return Boolean.parseBoolean(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/common/RangerConfigUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerConfigUtil.java b/security-admin/src/main/java/org/apache/ranger/common/RangerConfigUtil.java
index 67ce850..afb434b 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerConfigUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerConfigUtil.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
- package org.apache.ranger.common;
+package org.apache.ranger.common;
 
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
@@ -38,25 +38,19 @@ public class RangerConfigUtil {
 	boolean isUserPrefEnabled = false;
 
 	public RangerConfigUtil() {
-		webappRootURL = PropertiesUtil
-				.getProperty("xa.webapp.url.root");
+
+		webappRootURL = PropertiesUtil.getProperty("ranger.externalurl");
 		if (webappRootURL == null || webappRootURL.trim().length() == 0) {
-			logger.error("webapp URL is not set. Please xa.webapp.url.root property");
+			logger.error("webapp URL is not set. Please ranger.externalurl property");
 		}
 
 		defaultMaxRows = PropertiesUtil.getIntProperty(
-				"xa.db.maxrows.default", defaultMaxRows);
-
-		roles = PropertiesUtil
-				.getPropertyStringList("xa.users.roles.list");
-
-		accessFilterEnabled = PropertiesUtil.getBooleanProperty(
-				"xa.db.access.filter.enable", true);
+				"ranger.db.maxrows.default", defaultMaxRows);
+		roles = PropertiesUtil.getPropertyStringList("ranger.users.roles.list");
 
-		isModerationEnabled = PropertiesUtil.getBooleanProperty(
-				"xa.moderation.enabled", isModerationEnabled);
-		isUserPrefEnabled = PropertiesUtil.getBooleanProperty(
-				"xa.userpref.enabled", isUserPrefEnabled);
+		accessFilterEnabled = PropertiesUtil.getBooleanProperty("ranger.db.access.filter.enable", true);
+		isModerationEnabled = PropertiesUtil.getBooleanProperty("ranger.moderation.enabled", isModerationEnabled);
+		isUserPrefEnabled = PropertiesUtil.getBooleanProperty("ranger.userpref.enabled", isUserPrefEnabled);
 	}	
 
 	/**

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/common/SearchUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/SearchUtil.java b/security-admin/src/main/java/org/apache/ranger/common/SearchUtil.java
index cb1d36e..731ce46 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/SearchUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/SearchUtil.java
@@ -57,11 +57,8 @@ public class SearchUtil {
 	String defaultDateFormat="MM/dd/yyyy";
 
 	public SearchUtil() {
-		minInListLength = PropertiesUtil.getIntProperty(
-				"xa.db.min_inlist", minInListLength);
-		defaultDateFormat = PropertiesUtil.getProperty(
-				"xa.ui.defaultDateformat", defaultDateFormat);
-		
+		minInListLength = PropertiesUtil.getIntProperty("ranger.db.min_inlist", minInListLength);
+		defaultDateFormat = PropertiesUtil.getProperty("ranger.ui.defaultDateformat", defaultDateFormat);
 	}
 
 	@Deprecated

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 cd54fd6..d6a6188 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
@@ -1297,7 +1297,8 @@ public class ServiceUtil {
    public boolean isValidateHttpsAuthentication( String serviceName, HttpServletRequest request) {
 		  
 		boolean isValidAuthentication=false;
-		boolean httpEnabled = PropertiesUtil.getBooleanProperty("http.enabled",true);
+//		boolean httpEnabled = PropertiesUtil.getBooleanProperty("http.enabled",true);
+		boolean httpEnabled = PropertiesUtil.getBooleanProperty("ranger.service.http.enabled",true);
 		X509Certificate[] certchain = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
 		String ipAddress = request.getHeader("X-FORWARDED-FOR");  
 		if (ipAddress == null) {  

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/common/XMLPropertiesUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/XMLPropertiesUtil.java b/security-admin/src/main/java/org/apache/ranger/common/XMLPropertiesUtil.java
new file mode 100644
index 0000000..a00664d
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/common/XMLPropertiesUtil.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.common;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.log4j.Logger;
+import org.springframework.util.DefaultPropertiesPersister;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XMLPropertiesUtil extends DefaultPropertiesPersister {
+	private static Logger logger = Logger.getLogger(XMLPropertiesUtil.class);
+
+	public XMLPropertiesUtil() {
+	}
+
+	@Override
+	public void loadFromXml(Properties properties, InputStream inputStream)
+			throws IOException {
+		try {
+			DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+					.newInstance();
+			xmlDocumentBuilderFactory.setIgnoringComments(true);
+			xmlDocumentBuilderFactory.setNamespaceAware(true);
+			DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+					.newDocumentBuilder();
+			Document xmlDocument = xmlDocumentBuilder.parse(inputStream);
+			xmlDocument.getDocumentElement().normalize();
+
+			NodeList nList = xmlDocument.getElementsByTagName("property");
+
+			for (int temp = 0; temp < nList.getLength(); temp++) {
+
+				Node nNode = nList.item(temp);
+
+				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+					Element eElement = (Element) nNode;
+
+					String propertyName = "";
+					String propertyValue = "";
+					if (eElement.getElementsByTagName("name").item(0) != null) {
+						propertyName = eElement.getElementsByTagName("name")
+								.item(0).getTextContent().trim();
+					}
+					if (eElement.getElementsByTagName("value").item(0) != null) {
+						propertyValue = eElement.getElementsByTagName("value")
+								.item(0).getTextContent().trim();
+					}
+
+					properties.put(propertyName, propertyValue);
+
+				}
+				logger.info("ranger site properties loaded successfully.");
+			}
+		} catch (Exception e) {
+			logger.error("Error loading : ", e);
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 bc2c988..0d6b6a9 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
@@ -512,7 +512,7 @@ public class AssetREST {
 			ipAddress = request.getRemoteAddr();
 		}
 
-		boolean httpEnabled = PropertiesUtil.getBooleanProperty("http.enabled",true);
+		boolean httpEnabled = PropertiesUtil.getBooleanProperty("ranger.service.http.enabled",true);
 
 		RangerService      service  = serviceREST.getServiceByName(repository);
 		List<RangerPolicy> policies = serviceREST.getServicePolicies(repository, request).getPolicies();

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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
new file mode 100644
index 0000000..5101051
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/security/handler/RangerAuthenticationProvider.java
@@ -0,0 +1,272 @@
+package org.apache.ranger.security.handler;
+
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+import javax.security.auth.login.AppConfigurationEntry;
+import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
+import javax.security.auth.login.Configuration;
+
+import org.apache.ranger.authentication.unix.jaas.RoleUserAuthorityGranter;
+import org.apache.ranger.common.PropertiesUtil;
+import org.springframework.ldap.core.support.LdapContextSource;
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.authentication.jaas.DefaultJaasAuthenticationProvider;
+import org.springframework.security.authentication.jaas.memory.InMemoryConfiguration;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
+import org.springframework.security.ldap.authentication.BindAuthenticator;
+import org.springframework.security.ldap.authentication.LdapAuthenticationProvider;
+import org.springframework.security.ldap.authentication.LdapAuthenticator;
+import org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider;
+import org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator;
+
+
+
+public class RangerAuthenticationProvider implements AuthenticationProvider {
+
+	private String rangerAuthenticationMethod;
+
+	private LdapAuthenticator authenticator;
+
+	public RangerAuthenticationProvider() {
+
+	}
+
+	public Authentication initializeAuthenticationHandler(
+			Authentication authentication) {
+		if (rangerAuthenticationMethod.equalsIgnoreCase("LDAP")) {
+			return getLdapAuthentication(authentication);
+		}
+		if (rangerAuthenticationMethod.equalsIgnoreCase("ACTIVE_DIRECTORY")
+				|| rangerAuthenticationMethod.equalsIgnoreCase("AD")) {
+			return getADAuthentication(authentication);
+		}
+		if (rangerAuthenticationMethod.equalsIgnoreCase("UNIX")) {
+			return getUnixAuthentication(authentication);
+		}
+
+		return null;
+
+	}
+
+	private Authentication getLdapAuthentication(Authentication authentication) {
+
+		try {
+			// getting ldap settings
+			String rangerLdapURL = PropertiesUtil.getProperty(
+					"ranger.ldap.url", "");
+			String rangerLdapUserDNPattern = PropertiesUtil.getProperty(
+					"ranger.ldap.user.dnpattern", "");
+			String rangerLdapGroupSearchBase = PropertiesUtil.getProperty(
+					"ranger.ldap.group.searchbase", "");
+			String rangerLdapGroupSearchFilter = PropertiesUtil.getProperty(
+					"ranger.ldap.group.searchfilter", "");
+			String rangerLdapGroupRoleAttribute = PropertiesUtil.getProperty(
+					"ranger.ldap.group.roleattribute", "");
+			String rangerLdapDefaultRole = PropertiesUtil.getProperty(
+					"ranger.ldap.default.role", "");
+
+			// taking the user-name and password from the authentication
+			// object.
+			String userName = authentication.getName();
+			String userPassword = "";
+			if (authentication.getCredentials() != null) {
+				userPassword = authentication.getCredentials().toString();
+			}
+
+			// populating LDAP context source with LDAP URL and user-DN-pattern
+			LdapContextSource ldapContextSource = new DefaultSpringSecurityContextSource(
+					rangerLdapURL);
+
+			ldapContextSource.setCacheEnvironmentProperties(false);
+			ldapContextSource.setAnonymousReadOnly(true);
+
+			// Creating LDAP authorities populator using Ldap context source and
+			// Ldap group search base.
+			// populating LDAP authorities populator with group search
+			// base,group role attribute, group search filter.
+			DefaultLdapAuthoritiesPopulator defaultLdapAuthoritiesPopulator = new DefaultLdapAuthoritiesPopulator(
+					ldapContextSource, rangerLdapGroupSearchBase);
+			defaultLdapAuthoritiesPopulator
+					.setGroupRoleAttribute(rangerLdapGroupRoleAttribute);
+			defaultLdapAuthoritiesPopulator
+					.setGroupSearchFilter(rangerLdapGroupSearchFilter);
+			defaultLdapAuthoritiesPopulator
+					.setIgnorePartialResultException(true);
+
+			// Creating BindAuthenticator using Ldap Context Source.
+			BindAuthenticator bindAuthenticator = new BindAuthenticator(
+					ldapContextSource);
+			String[] userDnPatterns = new String[] { rangerLdapUserDNPattern };
+			bindAuthenticator.setUserDnPatterns(userDnPatterns);
+
+			// Creating Ldap authentication provider using BindAuthenticator and
+			// Ldap authentication populator
+			LdapAuthenticationProvider ldapAuthenticationProvider = new LdapAuthenticationProvider(
+					bindAuthenticator, defaultLdapAuthoritiesPopulator);
+
+			// getting user authenticated
+			if (userName != null && userPassword != null
+					&& !userName.trim().isEmpty()
+					&& !userPassword.trim().isEmpty()) {
+				final List<GrantedAuthority> grantedAuths = new ArrayList<>();
+				grantedAuths.add(new SimpleGrantedAuthority(
+						rangerLdapDefaultRole));
+
+				final UserDetails principal = new User(userName, userPassword,
+						grantedAuths);
+
+				final Authentication finalAuthentication = new UsernamePasswordAuthenticationToken(
+						principal, userPassword, grantedAuths);
+
+				authentication = ldapAuthenticationProvider
+						.authenticate(finalAuthentication);
+				return authentication;
+			} else {
+				return null;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public Authentication getADAuthentication(Authentication authentication) {
+
+		String rangerADURL = PropertiesUtil.getProperty("ranger.ldap.ad.url",
+				"");
+		String rangerADDomain = PropertiesUtil.getProperty(
+				"ranger.ldap.ad.domain", "");
+		String rangerLdapDefaultRole = PropertiesUtil.getProperty(
+				"ranger.ldap.default.role", "");
+
+		ActiveDirectoryLdapAuthenticationProvider adAuthenticationProvider = new ActiveDirectoryLdapAuthenticationProvider(
+				rangerADDomain, rangerADURL);
+		adAuthenticationProvider.setConvertSubErrorCodesToExceptions(true);
+		adAuthenticationProvider.setUseAuthenticationRequestCredentials(true);
+
+		// Grab the user-name and password out of the authentication object.
+		String userName = authentication.getName();
+		String userPassword = "";
+		if (authentication.getCredentials() != null) {
+			userPassword = authentication.getCredentials().toString();
+		}
+
+		// getting user authenticated
+		if (userName != null && userPassword != null
+				&& !userName.trim().isEmpty() && !userPassword.trim().isEmpty()) {
+			final List<GrantedAuthority> grantedAuths = new ArrayList<>();
+			grantedAuths.add(new SimpleGrantedAuthority(rangerLdapDefaultRole));
+			final UserDetails principal = new User(userName, userPassword,
+					grantedAuths);
+			final Authentication finalAuthentication = new UsernamePasswordAuthenticationToken(
+					principal, userPassword, grantedAuths);
+			authentication = adAuthenticationProvider
+					.authenticate(finalAuthentication);
+			return authentication;
+		} else {
+			return null;
+		}
+
+	}
+
+	public Authentication getUnixAuthentication(Authentication authentication) {
+
+		try {
+			String rangerLdapDefaultRole = PropertiesUtil.getProperty(
+					"ranger.ldap.default.role", "");
+			DefaultJaasAuthenticationProvider jaasAuthenticationProvider = new DefaultJaasAuthenticationProvider();
+			String loginModuleName = "org.apache.ranger.authentication.unix.jaas.RemoteUnixLoginModule";
+			LoginModuleControlFlag controlFlag = LoginModuleControlFlag.REQUIRED;
+			Map<String, String> options = (Map<String, String>) new HashMap<String, String>();
+			options.put("configFile", "ranger-admin-site.xml");
+			AppConfigurationEntry appConfigurationEntry = new AppConfigurationEntry(
+					loginModuleName, controlFlag, options);
+			AppConfigurationEntry[] appConfigurationEntries = new AppConfigurationEntry[] { appConfigurationEntry };
+			Map<String, AppConfigurationEntry[]> appConfigurationEntriesOptions = (Map<String, AppConfigurationEntry[]>) new HashMap<String, AppConfigurationEntry[]>();
+			appConfigurationEntriesOptions.put("SPRINGSECURITY",
+					appConfigurationEntries);
+			Configuration configuration = new InMemoryConfiguration(
+					appConfigurationEntriesOptions);
+
+			jaasAuthenticationProvider.setConfiguration(configuration);
+
+			RoleUserAuthorityGranter authorityGranter = new RoleUserAuthorityGranter();
+
+			authorityGranter.grant((Principal) authentication.getPrincipal());
+
+			RoleUserAuthorityGranter[] authorityGranters = new RoleUserAuthorityGranter[] { authorityGranter };
+
+			jaasAuthenticationProvider.setAuthorityGranters(authorityGranters);
+
+			String userName = authentication.getName();
+			String userPassword = "";
+			if (authentication.getCredentials() != null) {
+				userPassword = authentication.getCredentials().toString();
+			}
+
+			// getting user authenticated
+			if (userName != null && userPassword != null
+					&& !userName.trim().isEmpty()
+					&& !userPassword.trim().isEmpty()) {
+				final List<GrantedAuthority> grantedAuths = new ArrayList<>();
+				grantedAuths.add(new SimpleGrantedAuthority(
+						rangerLdapDefaultRole));
+				final UserDetails principal = new User(userName, userPassword,
+						grantedAuths);
+				final Authentication finalAuthentication = new UsernamePasswordAuthenticationToken(
+						principal, userPassword, grantedAuths);
+				authentication = jaasAuthenticationProvider
+						.authenticate(finalAuthentication);
+				return authentication;
+			} else {
+				return null;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return authentication;
+	}
+
+	@Override
+	public Authentication authenticate(Authentication authentication)
+			throws AuthenticationException {
+		if (authentication != null) {
+			return initializeAuthenticationHandler(authentication);
+		}
+
+		return null;
+	}
+
+	@Override
+	public boolean supports(Class<?> authentication) {
+		return authentication.equals(UsernamePasswordAuthenticationToken.class);
+	}
+
+	public String getRangerAuthenticationMethod() {
+		return rangerAuthenticationMethod;
+	}
+
+	public void setRangerAuthenticationMethod(String rangerAuthenticationMethod) {
+		this.rangerAuthenticationMethod = rangerAuthenticationMethod;
+	}
+
+	public LdapAuthenticator getAuthenticator() {
+		return authenticator;
+	}
+
+	public void setAuthenticator(LdapAuthenticator authenticator) {
+		this.authenticator = authenticator;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java
index bdef13a..b302888 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthFailureHandler.java
@@ -52,8 +52,7 @@ ExceptionMappingAuthenticationFailureHandler {
     public RangerAuthFailureHandler() {
 	super();
 	if (ajaxLoginfailurePage == null) {
-	    ajaxLoginfailurePage = PropertiesUtil.getProperty(
-		    "xa.ajax.auth.failure.page", "/ajax_failure.jsp");
+		ajaxLoginfailurePage = PropertiesUtil.getProperty("ranger.ajax.auth.failure.page", "/ajax_failure.jsp");
 	}
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
index 0900cf0..62ba781 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
@@ -58,8 +58,7 @@ SavedRequestAwareAuthenticationSuccessHandler {
     public RangerAuthSuccessHandler() {
 	super();
 	if (ajaxLoginSuccessPage == null) {
-	    ajaxLoginSuccessPage = PropertiesUtil.getProperty(
-		    "xa.ajax.auth.success.page", "/ajax_success.html");
+		ajaxLoginSuccessPage = PropertiesUtil.getProperty("ranger.ajax.auth.success.page", "/ajax_success.html");
 	}
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 e7b7feb..941db5b 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
@@ -47,8 +47,7 @@ public class RangerAuthenticationEntryPoint extends
 		LoginUrlAuthenticationEntryPoint {
 	public static final int SC_AUTHENTICATION_TIMEOUT = 419;
 
-	static Logger logger = Logger
-			.getLogger(RangerAuthenticationEntryPoint.class);
+	static Logger logger = Logger.getLogger(RangerAuthenticationEntryPoint.class);
 	static int ajaxReturnCode = -1;
 
 	@Autowired
@@ -64,8 +63,7 @@ public class RangerAuthenticationEntryPoint extends
 		}
 
 		if (ajaxReturnCode < 0) {
-			ajaxReturnCode = PropertiesUtil.getIntProperty(
-					"xa.ajax.auth.required.code", 401);
+		ajaxReturnCode = PropertiesUtil.getIntProperty("ranger.ajax.auth.required.code", 401);
 		}
 	}
 
@@ -79,12 +77,9 @@ public class RangerAuthenticationEntryPoint extends
 			logger.debug("commence() X-Requested-With=" + ajaxRequestHeader);
 		}
 
-		String requestURL = (request.getRequestURL() != null) ? request
-				.getRequestURL().toString() : "";
-		String servletPath = PropertiesUtil.getProperty(
-				"xa.servlet.mapping.url.pattern", "service");
-		String reqServletPath = configUtil.getWebAppRootURL() + "/"
-				+ servletPath;
+		String requestURL = (request.getRequestURL() != null) ? request.getRequestURL().toString() : "";
+		String servletPath = PropertiesUtil.getProperty("ranger.servlet.mapping.url.pattern", "service");
+		String reqServletPath = configUtil.getWebAppRootURL() + "/" + servletPath;
 
 		response.setContentType("application/json;charset=UTF-8");
 		response.setHeader("Cache-Control", "no-cache");

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
index ce4d544..7cbf599 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
@@ -64,7 +64,7 @@ public class RangerServiceService extends RangerServiceServiceBase<XXService, Ra
 	
 	public RangerServiceService() {
 		super();
-		hiddenPasswordString = PropertiesUtil.getProperty("xa.password.hidden", "*****");
+		hiddenPasswordString = PropertiesUtil.getProperty("ranger.password.hidden", "*****");
 		actionCreate = "create";
 		actionUpdate = "update";
 		actionDelete = "delete";

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XAgentService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAgentService.java b/security-admin/src/main/java/org/apache/ranger/service/XAgentService.java
index 3b43b93..f954f0e 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAgentService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAgentService.java
@@ -47,8 +47,7 @@ public class XAgentService {
 	protected boolean auditSupported = false;
 	
 	public XAgentService() {
-		defaultDBDateFormat = PropertiesUtil.getProperty(
-				"xa.db.defaultDateformat", defaultDBDateFormat);
+		defaultDBDateFormat = PropertiesUtil.getProperty("ranger.db.defaultDateformat", defaultDBDateFormat);
 		auditSupported = PropertiesUtil.getBooleanProperty("xa.audit.supported", 
 				false);
 	}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java b/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
index e5b5471..add9792 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
@@ -76,7 +76,7 @@ public class XAssetService extends XAssetServiceBase<XXAsset, VXAsset> {
 	
 	public XAssetService(){
 		super();
-		hiddenPasswordString = PropertiesUtil.getProperty("xa.password.hidden", "*****");
+		hiddenPasswordString = PropertiesUtil.getProperty("ranger.password.hidden", "*****");
 		searchFields.add(new SearchField("status", "obj.activeStatus",
 				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL));
 		searchFields.add(new SearchField("name", "obj.name", DATA_TYPE.STRING,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
index d31e178..7f2ab83 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
@@ -74,8 +74,7 @@ public class XGroupService extends XGroupServiceBase<XXGroup, VXGroup> {
 		searchFields.add(new SearchField("isVisible", "obj.isVisible",
 				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL ));
 
-		 createdByUserId = new Long(PropertiesUtil.getIntProperty(
-				"xa.xuser.createdByUserId", 1));
+		createdByUserId = new Long(PropertiesUtil.getIntProperty("ranger.xuser.createdByUserId", 1));
 
 		 sortFields.add(new SortField("name", "obj.name",true,SortField.SORT_ORDER.ASC));
 	}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XGroupUserService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupUserService.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupUserService.java
index 4af9049..d54b71b 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupUserService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupUserService.java
@@ -66,8 +66,7 @@ public class XGroupUserService extends
 				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
 		searchFields.add(new SearchField("xGroupId", "obj.parentGroupId",
 				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		createdByUserId = new Long(PropertiesUtil.getIntProperty(
-				"xa.xuser.createdByUserId", 1));
+		createdByUserId = new Long(PropertiesUtil.getIntProperty("ranger.xuser.createdByUserId", 1));
 		
 	}
 


[4/4] incubator-ranger git commit: RANGER-431: modified to work with a consolidated configuration file

Posted by sn...@apache.org.
RANGER-431: modified to work with a consolidated configuration file


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/91d1e137
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/91d1e137
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/91d1e137

Branch: refs/heads/master
Commit: 91d1e137483a1c3739cf395f710ca5d37b20019d
Parents: 11bb55b
Author: sneethiraj <sn...@apache.org>
Authored: Tue Apr 28 23:38:53 2015 -0400
Committer: sneethiraj <sn...@apache.org>
Committed: Tue Apr 28 23:38:53 2015 -0400

----------------------------------------------------------------------
 .../conf/ranger_webserver.properties            |  44 -----
 security-admin/scripts/setup.sh                 |  16 --
 .../apache/ranger/common/RangerProperties.java  | 160 +++++++++++++++++++
 .../conf.dist/ranger-admin-default-site.xml     |   2 +-
 .../META-INF/contextXML/unix_bean_settings.xml  |  10 +-
 .../unixauth-config/unixauth.properties         |  25 ---
 src/main/assembly/admin-web.xml                 |   2 +-
 .../config/UserGroupSyncConfig.java             |   4 +
 .../unix/jaas/RemoteUnixLoginModule.java        |  15 +-
 unixauthservice/scripts/install.properties      |  15 +-
 unixauthservice/scripts/setup.py                |  16 +-
 .../UnixAuthenticationService.java              | 150 ++++++++++-------
 12 files changed, 295 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/embeddedwebserver/conf/ranger_webserver.properties
----------------------------------------------------------------------
diff --git a/embeddedwebserver/conf/ranger_webserver.properties b/embeddedwebserver/conf/ranger_webserver.properties
deleted file mode 100644
index ca98dee..0000000
--- a/embeddedwebserver/conf/ranger_webserver.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# Service Information
-#
-service.host=localhost
-http.service.port=6080
-service.shutdownPort=6085
-service.shutdownCommand=SHUTDOWN
-
-# Set ajp.enabled=true, if rnager-admin is behind an apache loadbalancer 
-# and loadbalacner is listening on https for requuests from clients
-# and  BalancerMember configuration in Apache is pointing to ajp protocol
-ajp.enabled=false
-
-#
-# SSL Connector Information
-# 
-https.service.port=6182
-https.attrib.SSLEnabled=false 
-https.attrib.sslProtocol=TLS
-https.attrib.clientAuth=false
-https.attrib.keyAlias=myKey
-https.attrib.keystorePass=xasecure
-https.attrib.keystoreFile=/etc/ranger/admin/keys/server.jks
-
-#
-# Access Log Information
-#
-accesslog.dateformat=yyyy-MM-dd
-accesslog.pattern=%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/security-admin/scripts/setup.sh
----------------------------------------------------------------------
diff --git a/security-admin/scripts/setup.sh b/security-admin/scripts/setup.sh
index 3868ea2..14378cb 100755
--- a/security-admin/scripts/setup.sh
+++ b/security-admin/scripts/setup.sh
@@ -1163,10 +1163,6 @@ create_audit_db_user(){
 
 do_unixauth_setup() {
 
-	RANGER_JAAS_CONF_DIR="${INSTALL_DIR}/ews/webapp/WEB-INF/classes/conf/ranger_jaas"
-
-	cp ./unixauth-config/*  ${RANGER_JAAS_CONF_DIR}
-
     ldap_file=$app_home/WEB-INF/classes/conf/ranger-admin-site.xml
     if test -f $ldap_file; then
 	log "[I] $ldap_file file found"
@@ -1184,11 +1180,6 @@ do_unixauth_setup() {
 	else
 		log "[E] $ldap_file does not exists" ; exit 1;
 	fi
-
-	owner=ranger
-	group=ranger
-	chown -R ${owner}:${group} ${RANGER_JAAS_CONF_DIR}
-	chmod -R go-rwx ${RANGER_JAAS_CONF_DIR}
 }
 
 do_authentication_setup(){
@@ -1301,13 +1292,6 @@ setup_install_files(){
 		chown -R ${unix_user} ${WEBAPP_ROOT}/WEB-INF/classes/conf
 	fi
 
-	if [ ! -d ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger_jaas ]; then
-	    log "[I] Creating ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger_jaas"
-	    mkdir -p ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger_jaas
-		chown -R ${unix_user} ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger_jaas
-		chmod 700 ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger_jaas
-	fi
-
 	if [ ! -d ${WEBAPP_ROOT}/WEB-INF/classes/lib ]; then
 	    log "[I] Creating ${WEBAPP_ROOT}/WEB-INF/classes/lib"
 	    mkdir -p ${WEBAPP_ROOT}/WEB-INF/classes/lib

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/security-admin/src/main/java/org/apache/ranger/common/RangerProperties.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerProperties.java b/security-admin/src/main/java/org/apache/ranger/common/RangerProperties.java
new file mode 100644
index 0000000..72fde46
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerProperties.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.common;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class RangerProperties extends  HashMap<String,String>  {
+	
+	private static final long serialVersionUID = -4094378755892810987L;
+
+	private final Logger LOG = Logger.getLogger(RangerProperties.class) ;
+
+	private final String XMLCONFIG_FILENAME_DELIMITOR = ",";
+	private final String XMLCONFIG_PROPERTY_TAGNAME = "property" ;
+	private final String XMLCONFIG_NAME_TAGNAME = "name" ;
+	private final String XMLCONFIG_VALUE_TAGNAME = "value" ;
+
+	private String xmlConfigFileNames = null;
+
+	public RangerProperties(String xmlConfigFileNames) {
+		this.xmlConfigFileNames = xmlConfigFileNames;
+		initProperties();
+	}
+
+	private void initProperties() {
+		
+		if (xmlConfigFileNames == null || xmlConfigFileNames.isEmpty())
+			return;
+
+		String[] fnList = xmlConfigFileNames
+				.split(XMLCONFIG_FILENAME_DELIMITOR);
+
+		for (String fn : fnList) {
+			try {
+				loadXMLConfig(fn) ;
+			}
+			catch(IOException ioe) {
+				LOG.error("Unable to load configuration from file: [" + fn + "]", ioe);
+			}
+		}
+
+	}
+
+	private void loadXMLConfig(String fileName) throws IOException {
+
+		try {
+			InputStream in = getFileInputStream(fileName);
+
+			if (in == null) {
+				return;
+			}
+
+			DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+					.newInstance();
+			xmlDocumentBuilderFactory.setIgnoringComments(true);
+			xmlDocumentBuilderFactory.setNamespaceAware(true);
+			DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+					.newDocumentBuilder();
+			Document xmlDocument = xmlDocumentBuilder.parse(in);
+			xmlDocument.getDocumentElement().normalize();
+
+			NodeList nList = xmlDocument.getElementsByTagName(XMLCONFIG_PROPERTY_TAGNAME);
+
+			for (int temp = 0; temp < nList.getLength(); temp++) {
+
+				Node nNode = nList.item(temp);
+
+				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+					Element eElement = (Element) nNode;
+
+					String propertyName = "";
+					String propertyValue = "";
+					
+					if (eElement.getElementsByTagName(XMLCONFIG_NAME_TAGNAME).item(0) != null) {
+						propertyName = eElement.getElementsByTagName(XMLCONFIG_NAME_TAGNAME).item(0).getTextContent().trim();
+					}
+					
+					if (eElement.getElementsByTagName(XMLCONFIG_VALUE_TAGNAME).item(0) != null) {
+						propertyValue = eElement.getElementsByTagName(XMLCONFIG_VALUE_TAGNAME).item(0).getTextContent().trim();
+					}
+					
+					if (get(propertyName) != null) 
+						remove(propertyName) ;
+					
+					if (propertyValue != null)
+						put(propertyName, propertyValue);
+					
+				}
+			}
+		} catch (Throwable t) {
+			throw new IOException(t);
+		}
+	}
+
+	private InputStream getFileInputStream(String path)
+			throws FileNotFoundException {
+
+		InputStream ret = null;
+
+		File f = new File(path);
+
+		if (f.exists()) {
+			ret = new FileInputStream(f);
+		} else {
+			ret = getClass().getResourceAsStream(path);
+
+			if (ret == null) {
+				if (!path.startsWith("/")) {
+					ret = getClass().getResourceAsStream("/" + path);
+				}
+			}
+
+			if (ret == null) {
+				ret = ClassLoader.getSystemClassLoader().getResourceAsStream(
+						path);
+				if (ret == null) {
+					if (!path.startsWith("/")) {
+						ret = ClassLoader.getSystemResourceAsStream("/" + path);
+					}
+				}
+			}
+		}
+
+		return ret;
+	}
+	
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
index 1cc2866..7587076 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -225,7 +225,7 @@
 	</property>
 	<property>
 		<name>ranger.unixauth.service.hostname</name>
-		<value>bigdata.xasecure.net</value>
+		<value>localhost</value>
 	</property>
 	<property>
 		<name>ranger.unixauth.service.port</name>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/security-admin/src/main/webapp/META-INF/contextXML/unix_bean_settings.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/META-INF/contextXML/unix_bean_settings.xml b/security-admin/src/main/webapp/META-INF/contextXML/unix_bean_settings.xml
index 0885aff..1aab7ba 100644
--- a/security-admin/src/main/webapp/META-INF/contextXML/unix_bean_settings.xml
+++ b/security-admin/src/main/webapp/META-INF/contextXML/unix_bean_settings.xml
@@ -14,6 +14,10 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
+<beans:bean id="rangerConfiguration"  class="org.apache.ranger.common.RangerProperties">
+    <beans:constructor-arg value="ranger-admin-default-site.xml,ranger-admin-site.xml" />
+</beans:bean>
+
 <beans:bean id="jaasAuthProvider" class="org.springframework.security.authentication.jaas.DefaultJaasAuthenticationProvider">
 		<beans:property name="configuration">
 			<beans:bean
@@ -28,11 +32,7 @@
 									<beans:constructor-arg>
 										<util:constant static-field="javax.security.auth.login.AppConfigurationEntry$LoginModuleControlFlag.REQUIRED" />
 									</beans:constructor-arg>
-									<beans:constructor-arg>
-										<beans:map>
-											<beans:entry key="configFile" value="unixauth.properties" />
-										</beans:map>
-									</beans:constructor-arg>
+									<beans:constructor-arg ref="rangerConfiguration" />
 								</beans:bean>
 							</beans:array>
 						</beans:entry>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/security-admin/unixauth-config/unixauth.properties
----------------------------------------------------------------------
diff --git a/security-admin/unixauth-config/unixauth.properties b/security-admin/unixauth-config/unixauth.properties
deleted file mode 100644
index 7047e58..0000000
--- a/security-admin/unixauth-config/unixauth.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-remoteLoginEnabled=true
-authServiceHostName=bigdata.xasecure.net
-authServicePort=5151
-#keyStore=keystore.jks
-#keyStorePassword=password
-#trustStore=cacerts
-#trustStorePassword=changeit
-sslEnabled=true
-debug=false
-serverCertValidation=false

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/src/main/assembly/admin-web.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/admin-web.xml b/src/main/assembly/admin-web.xml
index 3fd1f53..5886679 100644
--- a/src/main/assembly/admin-web.xml
+++ b/src/main/assembly/admin-web.xml
@@ -284,12 +284,12 @@
 		<outputDirectory>/ews/lib</outputDirectory>
 		<directory>embeddedwebserver/lib</directory>
 	</fileSet>
--->
 	<fileSet>
 		<outputDirectory>/unixauth-config</outputDirectory>
 		<directory>security-admin/unixauth-config</directory>
 		<fileMode>544</fileMode>
 	</fileSet>
+-->
 
 	<fileSet>
 		<outputDirectory>/db</outputDirectory>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
index dcfa515..e079939 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
@@ -232,6 +232,10 @@ public class UserGroupSyncConfig  {
 										.item(0).getTextContent().trim();
 							}
 
+							if (prop.get(propertyName) != null) {
+								prop.remove(propertyName) ;
+							}
+							
 							prop.put(propertyName, propertyValue);
 
 						}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
----------------------------------------------------------------------
diff --git a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
index ece0a81..0dd549a 100644
--- a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
+++ b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
@@ -80,7 +80,7 @@ public class RemoteUnixLoginModule implements LoginModule {
 	private char[] password;
 	private Subject subject;
 	private CallbackHandler callbackHandler;
-	private boolean debug = false;
+	private boolean debug = true ;
 
 	private String remoteHostName;
 	private int remoteHostAuthServicePort;
@@ -142,6 +142,7 @@ public class RemoteUnixLoginModule implements LoginModule {
 			this.callbackHandler = new ConsolePromptCallbackHandler();
 		}
 
+		/*
 		Properties config = null ;
 
 		String val = (String) options.get(REMOTE_UNIX_AUTHENICATION_CONFIG_FILE_PARAM);
@@ -219,7 +220,11 @@ public class RemoteUnixLoginModule implements LoginModule {
 			config = new Properties() ;
 			config.putAll(options);
 		}
-
+		
+		*/
+		
+		Properties config = new Properties() ;
+		config.putAll(options) ;
 		initParams(config) ;
 		
 	}
@@ -245,6 +250,9 @@ public class RemoteUnixLoginModule implements LoginModule {
 		if (val != null && (!val.equalsIgnoreCase("false"))) {
 			debug = true;
 		}
+		else {
+			debug = false ;
+		}
 
 		remoteHostName = (String) options.get(REMOTE_LOGIN_HOST_PARAM);
 		log("RemoteHostName:" + remoteHostName);
@@ -483,8 +491,7 @@ public class RemoteUnixLoginModule implements LoginModule {
 				}
 			}
 		} catch (Throwable t) {
-			t.printStackTrace();
-			throw new LoginException("FAILED: unable to authenticate to AuthenticationService: " + remoteHostName + ":" + remoteHostAuthServicePort + ", Exception: " + t);
+			throw new LoginException("FAILED: unable to authenticate to AuthenticationService: " + remoteHostName + ":" + remoteHostAuthServicePort + ", Exception: [" + t + "]");
 		} finally {
 			log("Login of user String: {" + aUserName + "}, return from AuthServer: {" + ret + "}");
 		}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/unixauthservice/scripts/install.properties
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/install.properties b/unixauthservice/scripts/install.properties
index 846a6ac..5215620 100644
--- a/unixauthservice/scripts/install.properties
+++ b/unixauthservice/scripts/install.properties
@@ -19,18 +19,18 @@
 #
 #  POLICY_MGR_URL = http://policymanager.xasecure.net:6080
 #
-POLICY_MGR_URL = http://localhost:6080
+POLICY_MGR_URL = 
 
 # sync source,  only unix and ldap are supported at present
 # defaults to unix
-SYNC_SOURCE = unix
+SYNC_SOURCE = 
 
 
 #
 # Minumum Unix User-id to start SYNC.
 # This should avoid creating UNIX system-level users in the Policy Manager
 #
-MIN_UNIX_USER_ID_TO_SYNC = 1000
+MIN_UNIX_USER_ID_TO_SYNC = 500
 
 # sync interval in minutes
 # user, groups would be synced again at the end of each sync interval
@@ -39,9 +39,13 @@ MIN_UNIX_USER_ID_TO_SYNC = 1000
 SYNC_INTERVAL = 
 
 #User and group for the usersync process
-unix_user=sneethiraj
-unix_group=staff
+unix_user=ranger
+unix_group=ranger
 
+#
+# The file where all credential is kept in cryptic format
+#
+CRED_KEYSTORE_FILENAME=/etc/ranger/usersync/conf/rangerusersync.jceks
 
 # ---------------------------------------------------------------
 # The following properties are relevant only if SYNC_SOURCE = ldap
@@ -62,7 +66,6 @@ SYNC_LDAP_BIND_DN =
 # Must specify a value if SYNC_SOURCE is ldap
 # unless anonymous search is allowed by the directory on users and group
 SYNC_LDAP_BIND_PASSWORD = 
-CRED_KEYSTORE_FILENAME=/usr/lib/xausersync/.jceks/xausersync.jceks
 
 # search base for users and groups
 # sample value would be dc=hadoop,dc=apache,dc=org

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/unixauthservice/scripts/setup.py
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/setup.py b/unixauthservice/scripts/setup.py
index 26078be..4cb79ff 100755
--- a/unixauthservice/scripts/setup.py
+++ b/unixauthservice/scripts/setup.py
@@ -38,7 +38,7 @@ pidFolderName = '/var/run/ranger'
 logFolderName = '/var/log/ranger'
 initdDirName = '/etc/init.d'
 
-rangerBaseDirName = os.getcwd() #'/etc/ranger'
+rangerBaseDirName = '/etc/ranger'
 usersyncBaseDirName = 'usersync'
 confBaseDirName = 'conf'
 confDistBaseDirName = 'conf.dist'
@@ -52,7 +52,7 @@ log4jFileName          = 'log4j.xml'
 install2xmlMapFileName = 'installprop2xml.properties'
 templateFileName = 'ranger-ugsync-template.xml'
 initdProgramName = 'ranger-usersync'
-PROP2ALIASMAP = { 'ranger.usersync.ldap.ldapbindpassword':'ldap.bind.password' ,
+PROP2ALIASMAP = { 'ranger.usersync.ldap.ldapbindpassword':'ranger.usersync.ldap.bindalias', 
 				   'ranger.usersync.keystore.password':'usersync.ssl.key.password',
 				   'ranger.usersync.truststore.password':'usersync.ssl.truststore.password'}
 
@@ -145,8 +145,8 @@ def writeXMLUsingProperties(xmlTemplateFileName,prop,xmlOutputFileName):
         name = config.find('name').text
         if (name in prop.keys()):
             config.find('value').text = prop[name]
-        else:
-            print "ERROR: key not found: %s" % (name)
+        #else:
+        #    print "ERROR: key not found: %s" % (name)
     if isfile(xmlOutputFileName):
         archiveFile(xmlOutputFileName)
     tree.write(xmlOutputFileName)
@@ -179,14 +179,18 @@ def convertInstallPropsToXML(props):
 		if (syncSource == SYNC_SOURCE_UNIX):
 			ret['ranger.usersync.source.impl.class'] = 'org.apache.ranger.unixusersync.process.UnixUserGroupBuilder'
 			if (SYNC_INTERVAL_NEW_KEY not in ret or len(str(ret[SYNC_INTERVAL_NEW_KEY])) == 0):
-				ret[SYNC_INTERVAL_NEW_KEY] = '5'
+				ret[SYNC_INTERVAL_NEW_KEY] = "300000"
+			else:
+				ret[SYNC_INTERVAL_NEW_KEY] = int(ret[SYNC_INTERVAL_NEW_KEY]) * 60000
 			#for key in ret.keys():
 			#	if (key.startswith("ranger.usersync.ldap") or key.startswith("ranger.usersync.group") or key.startswith("ranger.usersync.paged")):
 			#		del ret[key]
 		elif (syncSource == SYNC_SOURCE_LDAP):
 			ret['ranger.usersync.source.impl.class'] = 'org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder'
 			if (SYNC_INTERVAL_NEW_KEY not in ret or len(str(ret[SYNC_INTERVAL_NEW_KEY])) == 0):
-				ret[SYNC_INTERVAL_NEW_KEY] = '60'
+				ret[SYNC_INTERVAL_NEW_KEY] = "3600000"
+			else:
+				ret[SYNC_INTERVAL_NEW_KEY] = int(ret[SYNC_INTERVAL_NEW_KEY]) * 60000
 		else:
 			print "ERROR: Invalid value (%s) defined for %s in install.properties. Only valid values are %s" % (syncSource, SYNC_SOURCE_KEY,SYNC_SOURCE_LIST)
 			sys.exit(1)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/91d1e137/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
----------------------------------------------------------------------
diff --git a/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java b/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
index e9e5272..ff2838f 100644
--- a/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
+++ b/unixauthservice/src/main/java/org/apache/ranger/authentication/UnixAuthenticationService.java
@@ -44,7 +44,9 @@ import javax.net.ssl.TrustManagerFactory;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.apache.hadoop.security.alias.CredentialProvider;
 import org.apache.log4j.Logger;
+import org.apache.ranger.credentialapi.CredentialReader;
 import org.apache.ranger.usergroupsync.UserGroupSync;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -59,15 +61,20 @@ public class UnixAuthenticationService {
 	
 	private static final String SSL_ALGORITHM = "TLS" ;
 	private static final String REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM = "ranger.usersync.port" ;
+	
 	private static final String SSL_KEYSTORE_PATH_PARAM = "ranger.usersync.keystore.file" ;
-	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.keystore.password" ;
 	private static final String SSL_TRUSTSTORE_PATH_PARAM = "ranger.usersync.truststore.file" ;
-	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.truststore.password" ;
+	
+	private static final String SSL_KEYSTORE_PATH_PASSWORD_ALIAS = "usersync.ssl.key.password" ;
+	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_ALIAS = "usersync.ssl.truststore.password" ;
+
 	private static final String CRED_VALIDATOR_PROG = "ranger.usersync.passwordvalidator.path" ;
 	private static final String ADMIN_USER_LIST_PARAM = "admin.users" ;
 	private static final String ADMIN_ROLE_LIST_PARAM = "admin.roleNames" ;
 	private static final String SSL_ENABLED_PARAM = "ranger.usersync.ssl" ;
 	
+	private static final String CREDSTORE_FILENAME_PARAM = "ranger.usersync.credstore.filename" ;
+	
 	private String keyStorePath ;
 	private String keyStorePathPassword ;
 	private String trustStorePath ;
@@ -80,6 +87,11 @@ public class UnixAuthenticationService {
 	private boolean SSLEnabled = false ;
 	
 	static private boolean enableUnixAuth = false;
+	
+	private static final String[] UGSYNC_CONFIG_XML_FILES = { "ranger-ugsync-default.xml",  "ranger-ugsync-site.xml" } ; 
+	private static final String    PROPERTY_ELEMENT_TAGNAME = "property" ;
+	private static final String    NAME_ELEMENT_TAGNAME = "name" ;
+	private static final String    VALUE_ELEMENT_TAGNAME = "value" ;
 
 	public static void main(String[] args) {
 		if (args.length > 0) {
@@ -133,65 +145,86 @@ public class UnixAuthenticationService {
 	//TODO: add more validation code
 	private void init() throws Throwable {
 		Properties prop = new Properties() ;
-		InputStream in = getFileInputStream("ranger-ugsync-site.xml") ;
-
-		if (in != null) {
-			try {
-//				prop.load(in);
-				DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
-						.newInstance();
-				xmlDocumentBuilderFactory.setIgnoringComments(true);
-				xmlDocumentBuilderFactory.setNamespaceAware(true);
-				DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
-						.newDocumentBuilder();
-				Document xmlDocument = xmlDocumentBuilder.parse(in);
-				xmlDocument.getDocumentElement().normalize();
-
-				NodeList nList = xmlDocument
-						.getElementsByTagName("property");
-
-				for (int temp = 0; temp < nList.getLength(); temp++) {
-
-					Node nNode = nList.item(temp);
-
-					if (nNode.getNodeType() == Node.ELEMENT_NODE) {
-
-						Element eElement = (Element) nNode;
-
-						String propertyName = "";
-						String propertyValue = "";
-						if (eElement.getElementsByTagName("name").item(
-								0) != null) {
-							propertyName = eElement
-									.getElementsByTagName("name")
-									.item(0).getTextContent().trim();
-						}
-						if (eElement.getElementsByTagName("value")
-								.item(0) != null) {
-							propertyValue = eElement
-									.getElementsByTagName("value")
-									.item(0).getTextContent().trim();
+		
+		for (String fn : UGSYNC_CONFIG_XML_FILES ) {
+		
+			InputStream in = getFileInputStream(fn) ;
+	
+			if (in != null) {
+				try {
+					DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
+					xmlDocumentBuilderFactory.setIgnoringComments(true);
+					xmlDocumentBuilderFactory.setNamespaceAware(true);
+					DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory.newDocumentBuilder();
+					Document xmlDocument = xmlDocumentBuilder.parse(in);
+					xmlDocument.getDocumentElement().normalize();
+	
+					NodeList nList = xmlDocument.getElementsByTagName(PROPERTY_ELEMENT_TAGNAME);
+	
+					for (int temp = 0; temp < nList.getLength(); temp++) {
+	
+						Node nNode = nList.item(temp);
+	
+						if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+	
+							Element eElement = (Element) nNode;
+	
+							String propertyName = "";
+							String propertyValue = "";
+							if (eElement.getElementsByTagName(NAME_ELEMENT_TAGNAME).item(
+									0) != null) {
+								propertyName = eElement
+										.getElementsByTagName(NAME_ELEMENT_TAGNAME)
+										.item(0).getTextContent().trim();
+							}
+							if (eElement.getElementsByTagName(VALUE_ELEMENT_TAGNAME)
+									.item(0) != null) {
+								propertyValue = eElement
+										.getElementsByTagName(VALUE_ELEMENT_TAGNAME)
+										.item(0).getTextContent().trim();
+							}
+	
+							LOG.info("Adding Property:[" + propertyName + "] Value:["+ propertyValue + "]");
+							if (prop.get(propertyName) != null ) {
+								prop.remove(propertyName) ;
+	 						}
+							prop.put(propertyName, propertyValue);
 						}
-
-						LOG.info("Adding Property:[" + propertyName + "] Value:"+ propertyValue);
-						prop.put(propertyName, propertyValue);
-
 					}
 				}
-			}
-			finally {
-				try {
-					in.close();
-				}
-				catch(IOException ioe) {
-					// Ignore IOE when closing streams
+				finally {
+					try {
+						in.close();
+					}
+					catch(IOException ioe) {
+						// Ignore IOE when closing streams
+					}
 				}
 			}
 		}
+		
+		String credStoreFileName = prop.getProperty(CREDSTORE_FILENAME_PARAM) ;
+		
 		keyStorePath = prop.getProperty(SSL_KEYSTORE_PATH_PARAM) ;
-		keyStorePathPassword = prop.getProperty(SSL_KEYSTORE_PATH_PASSWORD_PARAM) ;
+		
+		if (credStoreFileName == null) {
+			throw new RuntimeException("Credential file is not defined. param = [" + CREDSTORE_FILENAME_PARAM + "]") ;
+		}
+		
+		File credFile = new File(credStoreFileName) ;
+		
+		if (! credFile.exists()) {
+			throw new RuntimeException("Credential file [" + credStoreFileName + "]: does not exists." );
+		}
+		
+		if ( ! credFile.canRead() ) {
+			throw new RuntimeException("Credential file [" + credStoreFileName + "]: can not be read." );
+		}
+		
+		keyStorePathPassword = CredentialReader.getDecryptedString(credStoreFileName, SSL_KEYSTORE_PATH_PASSWORD_ALIAS) ;
+		trustStorePathPassword = CredentialReader.getDecryptedString(credStoreFileName,SSL_TRUSTSTORE_PATH_PASSWORD_ALIAS) ;
+		
 		trustStorePath  = prop.getProperty(SSL_TRUSTSTORE_PATH_PARAM) ;
-		trustStorePathPassword = prop.getProperty(SSL_TRUSTSTORE_PATH_PASSWORD_PARAM) ;
 		portNum = Integer.parseInt(prop.getProperty(REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM)) ;
 		String validatorProg = prop.getProperty(CRED_VALIDATOR_PROG) ;
 		if (validatorProg != null) {
@@ -236,7 +269,7 @@ public class UnixAuthenticationService {
 		
 		KeyManager[] km = null ;
 
-		if (keyStorePath != null) {
+		if (keyStorePath != null && ! keyStorePath.isEmpty()) {
 			KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()) ;
 			
 			InputStream in = null ;
@@ -244,6 +277,9 @@ public class UnixAuthenticationService {
 			in = getFileInputStream(keyStorePath) ;
 			
 			try {
+				if (keyStorePathPassword == null) {
+					keyStorePathPassword  = "" ;
+				}
 				ks.load(in, keyStorePathPassword.toCharArray());
 			}
 			finally {
@@ -262,7 +298,7 @@ public class UnixAuthenticationService {
 		
 		KeyStore trustStoreKeyStore = null ;
 		
-		if (trustStorePath != null) {
+		if (trustStorePath != null && ! trustStorePath.isEmpty()) {
 			trustStoreKeyStore = KeyStore.getInstance(KeyStore.getDefaultType()) ;
 			
 			InputStream in = null ;
@@ -270,6 +306,9 @@ public class UnixAuthenticationService {
 			in = getFileInputStream(trustStorePath) ;
 			
 			try {
+				if (trustStorePathPassword == null) {
+					trustStorePathPassword = "" ;
+				}
 				trustStoreKeyStore.load(in, trustStorePathPassword.toCharArray());
 			}
 			finally {
@@ -339,5 +378,4 @@ public class UnixAuthenticationService {
 		return ret ;
 	}
 
-
 }


[2/4] incubator-ranger git commit: RANGER-001 : ranger-site changes

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
index e101700..fa6679a 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
@@ -90,8 +90,7 @@ public class XResourceService extends
 
 	static HashMap<String, VTrxLogAttr> trxLogAttrs = new HashMap<String, VTrxLogAttr>();
 	
-	static String fileSeparator = PropertiesUtil.getProperty(
-			"xa.file.separator", "/");
+	static String fileSeparator = PropertiesUtil.getProperty("ranger.file.separator", "/");
 	
 	static {
 		trxLogAttrs.put("name", new VTrxLogAttr("name", "Resource Path", false));

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XUserService.java b/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
index 37be6f6..b013af5 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
@@ -115,11 +115,9 @@ public class XUserService extends XUserServiceBase<XXUser, VXUser> {
 				"XXPortalUser xXPortalUser", "xXPortalUser.loginId = obj.name "));
 
 		
-		createdByUserId = new Long(PropertiesUtil.getIntProperty(
-				"xa.xuser.createdByUserId", 1));
+		createdByUserId = new Long(PropertiesUtil.getIntProperty("ranger.xuser.createdByUserId", 1));
 
-		hiddenPasswordString = PropertiesUtil.getProperty("xa.password.hidden",
-				"*****");
+		hiddenPasswordString = PropertiesUtil.getProperty("ranger.password.hidden","*****");
 
 		sortFields.add(new SortField("name", "obj.name",true,SortField.SORT_ORDER.ASC));
 		
@@ -236,8 +234,7 @@ public class XUserService extends XUserServiceBase<XXUser, VXUser> {
 			if (xXPortalUser != null) {
 				vObj.setFirstName(xXPortalUser.getFirstName());
 				vObj.setLastName(xXPortalUser.getLastName());
-				vObj.setPassword(PropertiesUtil
-						.getProperty("xa.password.hidden"));
+				vObj.setPassword(PropertiesUtil.getProperty("ranger.password.hidden"));
 				String emailAddress = xXPortalUser.getEmailAddress();
 				if (emailAddress != null
 						&& stringUtil.validateEmail(emailAddress)) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 757076c..599f1df 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
@@ -58,7 +58,7 @@ public class SolrMgr {
 				if (!initDone) {
 					if (rangerBizUtil.getAuditDBType().equalsIgnoreCase("solr")) {
 						String solrURL = PropertiesUtil
-								.getProperty("xa.audit.solr.url");
+								.getProperty("ranger.solr.url");
 						if (solrURL == null || solrURL.isEmpty()) {
 							logger.fatal("Solr URL for Audit is empty");
 						} else {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
new file mode 100644
index 0000000..1cc2866
--- /dev/null
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -0,0 +1,400 @@
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+
+
+
+<configuration>
+	<property>
+		<name>ranger.jdbc.sqlconnectorjar</name>
+		<value>/usr/share/java/mysql-connector-java.jar</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.service.user</name>
+		<value>ranger</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.service.group</name>
+		<value>ranger</value>
+		<description></description>
+	</property>
+
+
+
+	<property>
+		<name>ajp.enabled</name>
+		<value>false</value>
+		<description></description>
+	</property>
+
+
+<!-- ################### System override properties (default values) ################## -->
+<!-- #Search properties -->
+	<property>
+		<name>ranger.db.maxrows.default</name>
+		<value>200</value>
+	</property>
+	<property>
+		<name>ranger.db.min_inlist</name>
+		<value>20</value>
+	</property>
+	<property>
+		<name>ranger.ui.defaultDateformat</name>
+		<value>MM/dd/yyyy</value>
+	</property>
+	<property>
+		<name>ranger.db.defaultDateformat</name>
+		<value>yyyy-MM-dd</value>
+	</property>
+
+<!-- #Security Spring configurations -->
+	<property>
+		<name>ranger.ajax.auth.required.code</name>
+		<value>401</value>
+	</property>
+	<property>
+		<name>ranger.ajax.auth.success.page</name>
+		<value>/ajax_success.html</value>
+	</property>
+	<property>
+		<name>ranger.logout.success.page</name>
+		<value>/login.jsp?action=logged_out</value>
+	</property>
+	<property>
+		<name>ranger.ajax.auth.failure.page</name>
+		<value>/ajax_failure.jsp</value>
+	</property>
+
+<!-- #Role list -->
+	<property>
+		<name>ranger.users.roles.list</name>
+		<value>ROLE_SYS_ADMIN, ROLE_USER, ROLE_OTHER, ROLE_ANON</value>
+	</property>
+<!-- #Mail listing -->
+	<property>
+		<name>ranger.mail.enabled</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.mail.smtp.auth</name>
+		<value>false</value>
+	</property>
+	<property>
+		<name>ranger.mail.retry.sleep.ms</name>
+		<value>2000</value>
+	</property>
+	<property>
+		<name>ranger.mail.retry.max.count</name>
+		<value>5</value>
+	</property>
+	<property>
+		<name>ranger.mail.retry.sleep.incr_factor</name>
+		<value>1</value>
+	</property>
+	<property>
+		<name>ranger.mail.listener.enable</name>
+		<value>false</value>
+	</property>
+<!-- #Hibernate/JPA settings -->
+	<property>
+		<name>ranger.jpa.showsql</name>
+		<value>false</value>
+	</property>
+
+
+
+
+<!-- #Second Level Cache -->
+	<property>
+		<name>ranger.second_level_cache</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.use_query_cache</name>
+		<value>true</value>
+	</property>
+
+<!-- ############################### General application properties ############################## -->
+	<property>
+		<name>ranger.user.firstname.maxlength</name>
+		<value>16</value>
+	</property>
+	<property>
+		<name>ranger.bookmark.name.maxlen</name>
+		<value>150</value>
+	</property>
+
+<!-- #RBAC -->
+	<property>
+		<name>ranger.rbac.enable</name>
+		<value>false</value>
+	</property>
+
+
+
+
+
+<!-- #REST paths -->
+	<property>
+		<name>ranger.rest.paths</name>
+		<value>org.apache.ranger.rest,xa.rest</value>
+	</property>
+
+<!-- #Password -->
+	<property>
+		<name>ranger.password.hidden</name>
+		<value>*****</value>
+	</property>
+	<property>
+		<name>ranger.resource.accessControl.enabled</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.xuser.createdByUserId</name>
+		<value>1</value>
+	</property>
+
+
+<!-- #hacks -->
+	<property>
+		<name>ranger.allow.hack</name>
+		<value>1</value>
+	</property>
+
+
+<!-- #audit logging -->
+	<property>
+		<name>ranger.log.SC_NOT_MODIFIED</name>
+		<value>false</value>
+	</property>
+
+<!-- # ServletMapping Url Pattern -->
+	<property>
+		<name>ranger.servlet.mapping.url.pattern</name>
+		<value>false</value>
+	</property>
+
+
+
+<!-- # File Separator -->
+
+	<property>
+		<name>ranger.file.separator</name>
+		<value>/</value>
+	</property>
+
+	<property>
+		<name>ranger.db.access.filter.enable</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.moderation.enabled</name>
+		<value>false</value>
+	</property>
+	<property>
+		<name>ranger.userpref.enabled</name>
+		<value>false</value>
+	</property>
+
+
+<!-- Embedded Web-Server properties  -->
+
+<!--
+#
+# Service Information
+#
+-->
+
+<!--  Unix auth properties -->
+
+	<property>
+		<name>ranger.unixauth.remote.login.enabled</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.service.hostname</name>
+		<value>bigdata.xasecure.net</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.service.port</name>
+		<value>5151</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.ssl.enabled</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.debug</name>
+		<value>false</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.server.cert.validation</name>
+		<value>false</value>
+	</property>
+
+	<property>
+		<name>ranger.unixauth.keystore</name>
+		<value>keystore.jks</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.keystore.password</name>
+		<value>password</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.truststore</name>
+		<value>cacerts</value>
+	</property>
+	<property>
+		<name>ranger.unixauth.truststore.password</name>
+		<value>changeit</value>
+	</property>
+
+
+<!-- Maven project Version  -->
+	<property>
+		<name>maven.project.version</name>
+		<value>0.5.0</value>
+		<description></description>
+	</property>
+
+
+	<property>
+		<name>ranger.service.shutdown.port</name>
+		<value>6085</value>
+	</property>
+
+	<property>
+		<name>ranger.service.shutdown.command</name>
+		<value>SHUTDOWN</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.ssl.protocol</name>
+		<value>TLS</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.client.auth</name>
+		<value>false</value>
+	</property>
+
+	<property>
+		<name>ranger.accesslog.dateformat</name>
+		<value>yyyy-MM-dd</value>
+	</property>
+
+	<property>
+		<name>ranger.accesslog.pattern</name>
+		<value>%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"</value>
+	</property>
+
+	<property>
+		<name>ranger.contextName</name>
+		<value>/</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.showsql</name>
+		<value>false</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.env.local</name>
+		<value>true</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.dialect</name>
+		<value>org.eclipse.persistence.platform.database.MySQLPlatform</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.maxpoolsize</name>
+		<value>40</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.minpoolsize</name>
+		<value>5</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.initialpoolsize</name>
+		<value>5</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.maxidletime</name>
+		<value>300</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.maxstatements</name>
+		<value>500</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.preferredtestquery</name>
+		<value>select 1;</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.idleconnectiontestperiod</name>
+		<value>60</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.jdbc.credential.alias</name>
+		<value>ranger.db.password</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.credential.provider.path</name>
+		<value>/etc/ranger/admin/rangeradmin.jceks</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.logs.base.dir</name>
+		<value>user.home</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.audit.jdbc.dialect</name>
+		<value>org.eclipse.persistence.platform.database.MySQLPlatform</value>
+		<description></description>
+	</property>
+
+	<property>
+		<name>ranger.jpa.audit.jdbc.credential.alias</name>
+		<value>ranger.auditdb.password</value>
+		<description></description>
+	</property>
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
new file mode 100644
index 0000000..c55cf47
--- /dev/null
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
@@ -0,0 +1,165 @@
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+
+
+<configuration>
+<!-- # DB Info -->
+	<property>
+		<name>ranger.jpa.jdbc.driver</name>
+		<value>net.sf.log4jdbc.DriverSpy</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.jdbc.url</name>
+		<value>jdbc:log4jdbc:mysql://localhost/ranger</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.jdbc.user</name>
+		<value>rangeradmin</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.jdbc.password</name>
+		<value>rangeradmin</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.externalurl</name>
+		<value>http://localhost:6080</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.scheduler.enabled</name>
+		<value>true</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.solr.url</name>
+		<value>http://##solr_host##:6083/solr/ranger_audits</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.audit.source.type</name>
+		<value>db</value>
+		<description></description>
+	</property>
+<!-- # DB Info for audit_DB -->
+
+	<property>
+		<name>ranger.jpa.audit.jdbc.driver</name>
+		<value>net.sf.log4jdbc.DriverSpy</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.audit.jdbc.url</name>
+		<value>jdbc:log4jdbc:mysql://localhost/rangeraudit</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.audit.jdbc.user</name>
+		<value>rangerlogger</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.jpa.audit.jdbc.password</name>
+		<value>rangerlogger</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.service.http.enabled</name>
+		<value>true</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.authentication.method</name>
+		<value>NONE</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.ldap.url</name>
+		<value>ldap://</value>
+		<description></description>
+	</property>
+		<property>
+		<name>ranger.ldap.user.dnpattern</name>
+		<value>uid={0},ou=users,dc=xasecure,dc=net</value>
+		<description></description>
+	</property>
+		<property>
+		<name>ranger.ldap.group.searchbase</name>
+		<value>ou=groups,dc=xasecure,dc=net</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.ldap.group.searchfilter</name>
+		<value>(member=uid={0},ou=users,dc=xasecure,dc=net)</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.ldap.group.roleattribute</name>
+		<value>cn</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.ldap.default.role</name>
+		<value>ROLE_USER</value>
+	</property>
+	<property>
+		<name>ranger.ldap.ad.domain</name>
+		<value>freestone.local</value>
+		<description></description>
+	</property>
+	<property>
+		<name>ranger.ldap.ad.url</name>
+		<value></value>
+		<description>ldap://</description>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.ssl.enabled</name>
+		<value>false</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.keystore.keyalias</name>
+		<value>myKey</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.keystore.pass</name>
+		<value>ranger</value>
+	</property>
+
+	<property>
+		<name>ranger.service.host</name>
+		<value>localhost</value>
+	</property>
+
+	<property>
+		<name>ranger.service.http.port</name>
+		<value>6080</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.port</name>
+		<value>6182</value>
+	</property>
+
+	<property>
+		<name>ranger.service.https.attrib.keystore.file</name>
+		<value>/etc/ranger/admin/keys/server.jks</value>
+	</property>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/security-applicationContext.xml b/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
index ee73136..f58b7ba 100644
--- a/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
+++ b/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
@@ -134,8 +134,13 @@ http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd">
 			WHERE usr.LOGIN_ID=?
 			AND usr_role.USER_ID = usr.ID"
 			/>
+ <beans:bean id="customAuthenticationProvider" class="org.apache.ranger.security.handler.RangerAuthenticationProvider" >
+	<beans:property name="rangerAuthenticationMethod" value="${ranger.authentication.method}" />
+ </beans:bean>
 
 	<security:authentication-manager alias="authenticationManager">
+         <security:authentication-provider ref="customAuthenticationProvider"/>
+	<!-- <security:authentication-manager alias="authenticationManager"> -->
 		<!-- AD_SEC_SETTINGS_START -->
 		<!-- AD_SEC_SETTINGS_END-->
 		<!-- LDAP_SEC_SETTINGS_START -->

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/conf.dist/xa_ldap.properties
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/xa_ldap.properties b/security-admin/src/main/resources/conf.dist/xa_ldap.properties
deleted file mode 100644
index a81633a..0000000
--- a/security-admin/src/main/resources/conf.dist/xa_ldap.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#LDAP|ACTIVE_DIRECTORY|UNIX|NONE
-authentication_method=NONE
-####
-xa_ldap_url=ldap://
-xa_ldap_userDNpattern=uid={0},ou=users,dc=xasecure,dc=net
-xa_ldap_groupSearchBase=ou=groups,dc=xasecure,dc=net
-xa_ldap_groupSearchFilter=(member=uid={0},ou=users,dc=xasecure,dc=net)
-xa_ldap_groupRoleAttribute=cn
-###
-xa_ldap_ad_domain=
-xa_ldap_ad_url=ldap://
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/conf.dist/xa_system.properties
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/xa_system.properties b/security-admin/src/main/resources/conf.dist/xa_system.properties
deleted file mode 100644
index 2f41e7c..0000000
--- a/security-admin/src/main/resources/conf.dist/xa_system.properties
+++ /dev/null
@@ -1,61 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#URL to the webapp
-xa.webapp.url.root=http://localhost:8080/security-admin-web
-xa.webapp.contextName=/
-
-#Hibernate/JPA settings
-xa.jpa.showsql=false
-xa.env.local=true
-jdbc.dialect=org.eclipse.persistence.platform.database.MySQLPlatform
-# DB Info
-jdbc.driver=net.sf.log4jdbc.DriverSpy
-jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/xa_db
-jdbc.user=xaadmin
-jdbc.password=xaadmin
-jdbc.maxPoolSize=40
-jdbc.minPoolSize=5
-jdbc.initialPoolSize=5
-jdbc.maxIdleTime=300
-jdbc.maxStatements=500
-jdbc.preferredTestQuery=select 1;
-#idleConnectionTestPeriod in seconds
-jdbc.idleConnectionTestPeriod=60
-xaDB.jdbc.credential.alias=mykey3
-xaDB.jdbc.credential.provider.path=/tmp/mykey3.jceks
-
-
-xa.logs.base.dir=user.home
-
-#Scheduler
-xa.scheduler.enabled=true
-
-xa.audit.store=db
-xa.audit.solr.url=
-
-# DB Info for audit_DB
-auditDB.jdbc.dialect=org.eclipse.persistence.platform.database.MySQLPlatform
-auditDB.jdbc.driver=net.sf.log4jdbc.DriverSpy
-auditDB.jdbc.url=jdbc:log4jdbc:mysql://54.208.49.40:3306/xasecure
-auditDB.jdbc.user=xalogger
-auditDB.jdbc.password=xalogger
-auditDB.jdbc.credential.alias=mykey4
-auditDB.jdbc.credential.provider.path=/tmp/mykey4.jceks
-#http
-http.enabled=true
-
-# Maven Project Version
-maven.project.version=${project.version}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/sample.xa_system.properties
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/sample.xa_system.properties b/security-admin/src/main/resources/sample.xa_system.properties
deleted file mode 100644
index a4bbe84..0000000
--- a/security-admin/src/main/resources/sample.xa_system.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#URL to the webapp
-xa.webapp.url.root=http://localhost:8080/xa
-
-
-# DB Info
-jdbc.driver=net.sf.log4jdbc.DriverSpy
-jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/xa_db
-jdbc.user=
-jdbc.password=
-jdbc.maxPoolSize=40
-jdbc.minPoolSize=5
-jdbc.initialPoolSize=5
-#maxIdleTime in seconds
-jdbc.maxIdleTime=300
-jdbc.maxStatements=500
-jdbc.preferredTestQuery=select 1;
-#idleConnectionTestPeriod in seconds
-jdbc.idleConnectionTestPeriod=60
-
-xa.logs.base.dir=user.home
-
-#Scheduler
-xa.scheduler.enabled=true
-
-
-#Audit Destination (solr or db)
-xa.audit.store=solr
-
-# DB Info for audit_DB
-auditDB.jdbc.driver=net.sf.log4jdbc.DriverSpy
-auditDB.jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/xasecure
-auditDB.jdbc.user=
-auditDB.jdbc.password=
-
-#Solr info for solr audit
-xa.audit.solr.url=
-
-
-#http
-http.enabled=true
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/xa_custom.properties
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/xa_custom.properties b/security-admin/src/main/resources/xa_custom.properties
deleted file mode 100644
index 0eadf07..0000000
--- a/security-admin/src/main/resources/xa_custom.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#Application properties which are supposed to be modified by deployment team 
-

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/resources/xa_default.properties
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/xa_default.properties b/security-admin/src/main/resources/xa_default.properties
deleted file mode 100644
index 997561a..0000000
--- a/security-admin/src/main/resources/xa_default.properties
+++ /dev/null
@@ -1,83 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#Application properties which are supposed to be not modified by deployment team 
-
-#Properties which are mandatory to be overridden in each deployment
-##################
-#System override properties (default values)\u0192
-##################
-
-#Search properties
-xa.db.maxrows.default=200
-xa.db.min_inlist=20
-xa.ui.defaultDateformat=MM/dd/yyyy
-xa.db.defaultDateformat=yyyy-MM-dd
-
-#Security Spring configurations
-xa.ajax.auth.required.code=401
-xa.ajax.auth.success.page=/ajax_success.html
-xa.ajax.auth.failure.page=/ajax_failure.jsp
-xa.logout.success.page=/login.jsp?action=logged_out
-
-#Role list
-xa.users.roles.list=ROLE_SYS_ADMIN, ROLE_USER, ROLE_OTHER, ROLE_ANON, ROLE_KEY_ADMIN
-
-#Mail listing
-xa.mail.enabled=true
-mail.smtp.auth=false
-xa.mail.retry.sleep.ms=2000
-xa.mail.retry.max.count=5
-xa.mail.retry.sleep.incr_factor=1
-xa.mail.listener.enable=false
-
-#Hibernate/JPA settings
-xa.jpa.showsql=false
-
-#Second Level Cache
-xa.second_level_cache=true
-xa.use_query_cache=true
-
-
-
-##############################
-#General application properties
-##############################
-
-xa.user.firstname.maxlength=16
-
-#RBAC
-xa.rbac.enable=false
-
-#REST paths
-xa.rest.paths=org.apache.ranger.rest,xa.rest
-
-#Password
-xa.password.hidden=*****
-
-xa.resource.accessControl.enabled=true
-xa.xuser.createdByUserId=1
-
-#hacks
-xa.allow.hack=true
-
-#audit logging
-xa.log.SC_NOT_MODIFIED=false
-
-# ServletMapping Url Pattern
-xa.servlet.mapping.url.pattern=service
-
-# File Separator
-xa.file.separator=/

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/webapp/META-INF/applicationContext.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/META-INF/applicationContext.xml b/security-admin/src/main/webapp/META-INF/applicationContext.xml
index 5cb99f3..f96a461 100644
--- a/security-admin/src/main/webapp/META-INF/applicationContext.xml
+++ b/security-admin/src/main/webapp/META-INF/applicationContext.xml
@@ -46,8 +46,8 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 		<property name="dataSource" ref="defaultDataSource" />
 		<property name="jpaVendorAdapter">
 			<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
-				<property name="databasePlatform" value="${jdbc.dialect}" />
-				<property name="showSql" value="${xa.jpa.showsql}" />
+				<property name="databasePlatform" value="${ranger.jpa.jdbc.dialect}" />
+				<property name="showSql" value="${ranger.jpa.showsql}" />
 				<property name="generateDdl" value="false" />
 			</bean>
 		</property>
@@ -66,8 +66,8 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 		<property name="dataSource" ref="loggingDataSource" />
 		<property name="jpaVendorAdapter">
 			<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
-				<property name="databasePlatform" value="${auditDB.jdbc.dialect}" />
-				<property name="showSql" value="${xa.jpa.showsql}" />
+				<property name="databasePlatform" value="${ranger.jpa.audit.jdbc.dialect}" />
+				<property name="showSql" value="${ranger.jpa.showsql}" />
 				<property name="generateDdl" value="false" />
 			</bean>
 		</property>
@@ -81,17 +81,27 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 		</property>
 	</bean>
 	
+
+	<bean id="xmlPropertyConfigurer" class="org.apache.ranger.common.XMLPropertiesUtil" />
+
 	<bean id="propertyConfigurer" class="org.apache.ranger.common.PropertiesUtil">
 		<property name="locations">
 			<list>
-				<value>classpath:xa_default.properties</value>
-				<value>classpath:xa_system.properties</value>
-				<value>classpath:xa_custom.properties</value>
-				<value>classpath:xa_ldap.properties</value>
+				<!-- <value>classpath:xa_default.properties</value> -->
+				<!-- <value>classpath:xa_system.properties</value> -->
+				<!-- <value>classpath:xa_custom.properties</value> -->
+				<!-- <value>classpath:xa_ldap.properties</value> -->
+				<value>classpath:ranger-admin-default-site.xml</value>
+				<value>classpath:ranger-admin-site.xml</value>
 			</list>
 		</property>
+		<property name="propertiesPersister" ref="xmlPropertyConfigurer" />
 	</bean>
 	
+
+
+
+
 	<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
 		<property name="scopes">
 			<map>
@@ -124,77 +134,79 @@ http://www.springframework.org/schema/util/spring-util.xsd">
 	<!-- Datasource and Connection Pool Configuration http://www.mchange.com/projects/c3p0/index.jsp#configuration_properties -->
 	<bean id="defaultDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
 		<property name="driverClass">
-			<value>${jdbc.driver}</value>
+			<value>${ranger.jpa.jdbc.driver}</value>
 		</property>
 		<property name="jdbcUrl">
-			<value>${jdbc.url}</value>
+			<value>${ranger.jpa.jdbc.url}</value>
 		</property>
 		<property name="user">
-			<value>${jdbc.user}</value>
+			<value>${ranger.jpa.jdbc.user}</value>
 		</property>
 		<property name="password">
-			<value>${jdbc.password}</value>
+			<value>${ranger.jpa.jdbc.password}</value>
 		</property>
 		<property name="maxPoolSize">
-			<value>20</value>
+			<!-- <value>20</value> -->
+			<value>${ranger.jpa.jdbc.maxpoolsize}</value>
 		</property>
 		<property name="minPoolSize">
-			<value>${jdbc.minPoolSize}</value>
+			<value>${ranger.jpa.jdbc.minpoolsize}</value>
 		</property>
 		<property name="initialPoolSize">
-			<value>${jdbc.initialPoolSize}</value>
+			<value>${ranger.jpa.jdbc.initialpoolsize}</value>
 		</property>
 		<!-- Seconds a Connection can remain pooled but unused before being discarded.
 		Zero means idle connections never expire. -->
 		<property name="maxIdleTime">
-			<value>${jdbc.maxIdleTime}</value>
+			<value>${ranger.jpa.jdbc.maxidletime}</value>
 		</property>
 		<property name="maxStatements">
-			<value>${jdbc.maxStatements}</value>
+			<value>${ranger.jpa.jdbc.maxstatements}</value>
 		</property>
 		<property name="preferredTestQuery">
-			<value>${jdbc.preferredTestQuery}</value>
+			<value>${ranger.jpa.jdbc.preferredtestquery}</value>
 		</property>
 		<property name="idleConnectionTestPeriod">
-			<value>${jdbc.idleConnectionTestPeriod}</value>
+			<value>${ranger.jpa.jdbc.idleconnectiontestperiod}</value>
 		</property>
 	</bean>	
 	
 	<bean id="loggingDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
 		<property name="driverClass">
-			<value>${auditDB.jdbc.driver}</value>
+			<value>${ranger.jpa.audit.jdbc.driver}</value>
 		</property>
 		<property name="jdbcUrl">
-			<value>${auditDB.jdbc.url}</value>
+			<value>${ranger.jpa.audit.jdbc.url}</value>
 		</property>
 		<property name="user">
-			<value>${jdbc.user}</value>
+			<value>${ranger.jpa.audit.jdbc.user}</value>
 		</property>
 		<property name="password">
-			<value>${jdbc.password}</value>
+			<value>${ranger.jpa.jdbc.password}</value>
 		</property>
 		<property name="maxPoolSize">
-			<value>20</value>
+			<!-- <value>20</value> -->
+			<value>${ranger.jpa.jdbc.maxpoolsize}</value>
 		</property>
 		<property name="minPoolSize">
-			<value>${jdbc.minPoolSize}</value>
+			<value>${ranger.jpa.jdbc.minpoolsize}</value>
 		</property>
 		<property name="initialPoolSize">
-			<value>${jdbc.initialPoolSize}</value>
+			<value>${ranger.jpa.jdbc.initialpoolsize}</value>
 		</property>
 		<!-- Seconds a Connection can remain pooled but unused before being discarded.
 		Zero means idle connections never expire. -->
 		<property name="maxIdleTime">
-			<value>${jdbc.maxIdleTime}</value>
+			<value>${ranger.jpa.jdbc.maxidletime}</value>
 		</property>
 		<property name="maxStatements">
-			<value>${jdbc.maxStatements}</value>
+			<value>${ranger.jpa.jdbc.maxstatements}</value>
 		</property>
 		<property name="preferredTestQuery">
-			<value>${jdbc.preferredTestQuery}</value>
+			<value>${ranger.jpa.jdbc.preferredtestquery}</value>
 		</property>
 		<property name="idleConnectionTestPeriod">
-			<value>${jdbc.idleConnectionTestPeriod}</value>
+			<value>${ranger.jpa.jdbc.idleconnectiontestperiod}</value>
 		</property>
 	</bean>
 		

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/webapp/META-INF/contextXML/ad_bean_settings.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/META-INF/contextXML/ad_bean_settings.xml b/security-admin/src/main/webapp/META-INF/contextXML/ad_bean_settings.xml
index 30811b3..1ad828f 100644
--- a/security-admin/src/main/webapp/META-INF/contextXML/ad_bean_settings.xml
+++ b/security-admin/src/main/webapp/META-INF/contextXML/ad_bean_settings.xml
@@ -16,7 +16,9 @@
 -->
     <beans:bean id="activeDirectoryAuthenticationProvider"
         class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
-    <beans:constructor-arg value="${xa_ldap_ad_domain}" />
-    <beans:constructor-arg value="${xa_ldap_ad_url}" />
+    <!-- <beans:constructor-arg value="${xa_ldap_ad_domain}" />
+    <beans:constructor-arg value="${xa_ldap_ad_url}" /> -->
+    <beans:constructor-arg value="${ranger.ldap.ad.domain}" />
+    <beans:constructor-arg value="${ranger.ldap.ad.url}" />
     <beans:property name="convertSubErrorCodesToExceptions" value="true"/>
 	</beans:bean>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/webapp/META-INF/contextXML/ldap_bean_settings.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/META-INF/contextXML/ldap_bean_settings.xml b/security-admin/src/main/webapp/META-INF/contextXML/ldap_bean_settings.xml
index 802ee0d..9b0f1a1 100644
--- a/security-admin/src/main/webapp/META-INF/contextXML/ldap_bean_settings.xml
+++ b/security-admin/src/main/webapp/META-INF/contextXML/ldap_bean_settings.xml
@@ -15,7 +15,8 @@
   limitations under the License.
 -->
     <beans:bean id="ldapContextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
-        <beans:constructor-arg value="${xa_ldap_url}"/>
+        <!-- <beans:constructor-arg value="${xa_ldap_url}"/> -->
+        <beans:constructor-arg value="${ranger.ldap.url}"/>
         <!-- Set bind user values and uncomment below two lines, if your LDAP settings require this -->
         <!-- <beans:property name="userDn" value="***"/>
         <beans:property name="password" value="***"/> -->
@@ -28,7 +29,8 @@
                 <beans:constructor-arg ref="ldapContextSource"/>
                 <beans:property name="userDnPatterns">
                     <beans:list>
-                        <beans:value>${xa_ldap_userDNpattern}</beans:value>
+                        <!-- <beans:value>${xa_ldap_userDNpattern}</beans:value> -->
+                        <beans:value>${ranger.ldap.user.dnpattern}</beans:value>
                     </beans:list>
                 </beans:property>
             </beans:bean>
@@ -36,9 +38,12 @@
         <beans:constructor-arg>
             <beans:bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
                 <beans:constructor-arg ref="ldapContextSource"/>
-                <beans:constructor-arg value="${xa_ldap_groupSearchBase}"/>
+                <!-- <beans:constructor-arg value="${xa_ldap_groupSearchBase}"/>
                 <beans:property name="groupSearchFilter" value="${xa_ldap_groupSearchFilter}"/>
-                <beans:property name="groupRoleAttribute" value="${xa_ldap_groupRoleAttribute}"/>
+                <beans:property name="groupRoleAttribute" value="${xa_ldap_groupRoleAttribute}"/> -->
+                <beans:constructor-arg value="${ranger.ldap.group.searchbase}"/>
+                <beans:property name="groupSearchFilter" value="${ranger.ldap.group.searchfilter}"/>
+                <beans:property name="groupRoleAttribute" value="${ranger.ldap.group.roleattribute}"/>
             </beans:bean>
         </beans:constructor-arg>
     </beans:bean>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/main/webapp/ajax_failure.jsp
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/ajax_failure.jsp b/security-admin/src/main/webapp/ajax_failure.jsp
index d00cbfb..b48064c 100644
--- a/security-admin/src/main/webapp/ajax_failure.jsp
+++ b/security-admin/src/main/webapp/ajax_failure.jsp
@@ -17,7 +17,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <%
 	int ajaxReturnCode = 401;
-	//PropertiesUtil.getIntProperty("xa.ajax.auth.required.code", 401);
+	//PropertiesUtil.getIntProperty("ranger.ajax.auth.required.code", 401);
 	response.sendError(ajaxReturnCode);
 %>
 <html>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
index d3c510b..e18e51c 100644
--- a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
@@ -131,6 +131,7 @@ public class TestUserMgr {
 		return userProfile;
 	}
 
+	@Ignore("Junit breakage: RANGER-425") // TODO
 	@Test
 	public void test11CreateUser() {
                 setup();
@@ -187,6 +188,7 @@ public class TestUserMgr {
 		Mockito.verify(daoManager).getXXPortalUserRole();
 	}
 
+	@Ignore("Junit breakage: RANGER-425") // TODO
 	@Test
 	public void test12CreateUser() {
                 setup();

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/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 dfe1dea..bb74bb8 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
@@ -210,6 +210,7 @@ public class TestXUserMgr {
 	@Ignore("temp disable")
 	@Test
 	public void test11CreateXUser() {
+		setup();
 		VXUser vxUser = vxUser();
 		Collection<String> userRoleList = new ArrayList<String>();
 		userRoleList.add("test");
@@ -263,6 +264,7 @@ public class TestXUserMgr {
 
 	@Test
 	public void test12UpdateXUser() {
+		setup();
 		VXUser vxUser = vxUser();
 		Mockito.when(xUserService.updateResource(vxUser)).thenReturn(vxUser);
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/security-admin/src/test/java/org/apache/ranger/service/PasswordComparisonAuthenticator.java
----------------------------------------------------------------------
diff --git a/security-admin/src/test/java/org/apache/ranger/service/PasswordComparisonAuthenticator.java b/security-admin/src/test/java/org/apache/ranger/service/PasswordComparisonAuthenticator.java
new file mode 100644
index 0000000..31bda11
--- /dev/null
+++ b/security-admin/src/test/java/org/apache/ranger/service/PasswordComparisonAuthenticator.java
@@ -0,0 +1,137 @@
+
+/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.Iterator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.ldap.NameNotFoundException;
+import org.springframework.ldap.core.DirContextOperations;
+import org.springframework.ldap.core.support.BaseLdapPathContextSource;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.authentication.encoding.LdapShaPasswordEncoder;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.ldap.SpringSecurityLdapTemplate;
+import org.springframework.security.ldap.authentication.AbstractLdapAuthenticator;
+import org.springframework.util.Assert;
+
+/**
+ * An {@link org.springframework.security.providers.ldap.LdapAuthenticator
+ * LdapAuthenticator} which compares the login password with the value stored in
+ * the directory using a remote LDAP "compare" operation.
+ *
+ * <p>
+ * If passwords are stored in digest form in the repository, then a suitable
+ * {@link PasswordEncoder} implementation must be supplied. By default,
+ * passwords are encoded using the {@link LdapShaPasswordEncoder}.
+ *
+ * @author Luke Taylor
+ * @version $Id: PasswordComparisonAuthenticator.java 2729 2008-03-13 16:49:19Z
+ *          luke_t $
+ */
+public final class PasswordComparisonAuthenticator extends
+		AbstractLdapAuthenticator {
+	// ~ Static fields/initializers
+	// =====================================================================================
+
+	private static final Log logger = LogFactory
+			.getLog(PasswordComparisonAuthenticator.class);
+
+	// ~ Instance fields
+	// ================================================================================================
+
+	private PasswordEncoder passwordEncoder = new LdapShaPasswordEncoder();
+	private String passwordAttributeName = "userPassword";
+
+	// ~ Constructors
+	// ===================================================================================================
+
+	public PasswordComparisonAuthenticator(
+			BaseLdapPathContextSource contextSource) {
+		super(contextSource);
+	}
+
+	// ~ Methods
+	// ========================================================================================================
+
+	public DirContextOperations authenticate(final Authentication authentication) {
+		Assert.isInstanceOf(UsernamePasswordAuthenticationToken.class,
+				authentication,
+				"Can only process UsernamePasswordAuthenticationToken objects");
+		// locate the user and check the password
+
+		DirContextOperations user = null;
+		String username = authentication.getName();
+		String password = (String) authentication.getCredentials();
+
+		Iterator dns = getUserDns(username).iterator();
+
+		SpringSecurityLdapTemplate ldapTemplate = new SpringSecurityLdapTemplate(
+				getContextSource());
+
+		while (dns.hasNext() && user == null) {
+			final String userDn = (String) dns.next();
+
+			try {
+				user = ldapTemplate.retrieveEntry(userDn, getUserAttributes());
+			} catch (NameNotFoundException ignore) {
+			}
+		}
+
+		if (user == null && getUserSearch() != null) {
+			user = getUserSearch().searchForUser(username);
+		}
+
+		if (user == null) {
+			throw new UsernameNotFoundException("User not found: " + username,
+					username);
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("Performing LDAP compare of password attribute '"
+					+ passwordAttributeName + "' for user '" + user.getDn()
+					+ "'");
+		}
+
+		String encodedPassword = passwordEncoder.encodePassword(password, null);
+		byte[] passwordBytes = encodedPassword.getBytes();
+
+		if (!ldapTemplate.compare(user.getDn().toString(),
+				passwordAttributeName, passwordBytes)) {
+			throw new BadCredentialsException(messages.getMessage(
+					"PasswordComparisonAuthenticator.badCredentials",
+					"Bad credentials"));
+		}
+
+		return user;
+	}
+
+	public void setPasswordAttributeName(String passwordAttribute) {
+		Assert.hasLength(passwordAttribute,
+				"passwordAttributeName must not be empty or null");
+		this.passwordAttributeName = passwordAttribute;
+	}
+
+	public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
+		Assert.notNull(passwordEncoder, "passwordEncoder must not be null.");
+		this.passwordEncoder = passwordEncoder;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/src/main/assembly/admin-web.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/admin-web.xml b/src/main/assembly/admin-web.xml
index f984248..3fd1f53 100644
--- a/src/main/assembly/admin-web.xml
+++ b/src/main/assembly/admin-web.xml
@@ -316,6 +316,7 @@
 			<include>restrict_permissions.py</include>
 			<include>upgrade_admin.py</include>
 			<include>upgrade.sh</include>
+			<include>update_property.py</include>
 		</includes>
 		<fileMode>544</fileMode>
 	</fileSet>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/src/main/assembly/usersync.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/usersync.xml b/src/main/assembly/usersync.xml
index b5f1620..a4bc87c 100644
--- a/src/main/assembly/usersync.xml
+++ b/src/main/assembly/usersync.xml
@@ -90,6 +90,7 @@
 		<directory>unixauthservice/scripts</directory>
 		<excludes>
 			<exclude>*.properties</exclude>
+			<exclude>initd</exclude>
 		</excludes>
 	</fileSet>
 	<fileSet>
@@ -126,4 +127,12 @@
 		<fileMode>444</fileMode>
         </fileSet>
   </fileSets>
+  <files>
+      <file>
+		<source>unixauthservice/scripts/initd</source>
+		<outputDirectory>/</outputDirectory>
+		<destName>ranger-usersync</destName>
+		<fileMode>755</fileMode>
+      </file>
+   </files>
 </assembly>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
index 3ff3a0a..dcfa515 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
@@ -29,45 +29,54 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.StringTokenizer;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.apache.ranger.credentialapi.CredentialReader;
 import org.apache.ranger.usergroupsync.UserGroupSink;
 import org.apache.ranger.usergroupsync.UserGroupSource;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class UserGroupSyncConfig  {
 
-	public static final String CONFIG_FILE = "unixauthservice.properties" ;
+	public static final String CONFIG_FILE = "ranger-ugsync-site.xml" ;
+
+	public static final String DEFAULT_CONFIG_FILE = "ranger-ugsync-default-site.xml" ;
 	
-	public static final String  UGSYNC_ENABLED_PROP = "usergroupSync.enabled" ;
+	public static final String  UGSYNC_ENABLED_PROP = "ranger.usersync.enabled" ;
 	
-	public static final String  UGSYNC_PM_URL_PROP = 	"usergroupSync.policymanager.baseURL" ;
+	public static final String  UGSYNC_PM_URL_PROP = 	"ranger.usersync.policymanager.baseURL" ;
 	
-	public static final String  UGSYNC_MIN_USERID_PROP  = 	"usergroupSync.unix.minUserId" ;
+	public static final String  UGSYNC_MIN_USERID_PROP  = 	"ranger.usersync.unix.minUserId" ;
 	
-	public static final String  UGSYNC_MAX_RECORDS_PER_API_CALL_PROP  = 	"usergroupSync.policymanager.MaxRecordsPerAPICall" ;
+	public static final String  UGSYNC_MAX_RECORDS_PER_API_CALL_PROP  = 	"ranger.usersync.policymanager.maxrecordsperapicall" ;
 
-	public static final String  UGSYNC_MOCK_RUN_PROP  = 	"usergroupSync.policymanager.mockRun" ;
+	public static final String  UGSYNC_MOCK_RUN_PROP  = 	"ranger.usersync.policymanager.mockrun" ;
 	
-	public static final String UGSYNC_SOURCE_FILE_PROC =	"usergroupSync.filesource.file";
+	public static final String UGSYNC_SOURCE_FILE_PROC =	"ranger.usersync.filesource.file";
 	
-	public static final String UGSYNC_SOURCE_FILE_DELIMITER = "usergroupSync.filesource.text.delimiter";
+	public static final String UGSYNC_SOURCE_FILE_DELIMITER = "ranger.usersync.filesource.text.delimiterer";
 	
-	private static final String SSL_KEYSTORE_PATH_PARAM = "keyStore" ;
+	private static final String SSL_KEYSTORE_PATH_PARAM = "ranger.usersync.keystore.file" ;
 
-	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "keyStorePassword" ;
+	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.keystore.password" ;
 	
-	private static final String SSL_TRUSTSTORE_PATH_PARAM = "trustStore" ;
+	private static final String SSL_TRUSTSTORE_PATH_PARAM = "ranger.usersync.truststore.file" ;
 	
-	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "trustStorePassword" ;
+	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "ranger.usersync.truststore.password" ;
 	
-	private static final String UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_PARAM = "usergroupSync.sleepTimeInMillisBetweenSyncCycle" ;
+	private static final String UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_PARAM = "ranger.usersync.sleeptimeinmillisbetweensynccycle" ;
 	
 	private static final long UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_UNIX_DEFAULT_VALUE = 300000L ;
 	
 	private static final long UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_LDAP_DEFAULT_VALUE = 21600000L ;
 
-	private static final String UGSYNC_SOURCE_CLASS_PARAM = "usergroupSync.source.impl.class";
+	private static final String UGSYNC_SOURCE_CLASS_PARAM = "ranger.usersync.source.impl.class";
 
-	private static final String UGSYNC_SINK_CLASS_PARAM = "usergroupSync.sink.impl.class";
+	private static final String UGSYNC_SINK_CLASS_PARAM = "ranger.usersync.sink.impl.class";
 
 	private static final String UGSYNC_SOURCE_CLASS = "org.apache.ranger.unixusersync.process.UnixUserGroupBuilder";
 
@@ -75,82 +84,82 @@ public class UserGroupSyncConfig  {
 
 	private static final String LGSYNC_SOURCE_CLASS = "org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder";
 	
-	private static final String LGSYNC_LDAP_URL = "ldapGroupSync.ldapUrl";
+	private static final String LGSYNC_LDAP_URL = "ranger.usersync.ldap.url";
 	
-	private static final String LGSYNC_LDAP_BIND_DN = "ldapGroupSync.ldapBindDn";
+	private static final String LGSYNC_LDAP_BIND_DN = "ranger.usersync.ldap.binddn";
 	
-	private static final String LGSYNC_LDAP_BIND_KEYSTORE = "ldapGroupSync.ldapBindKeystore";
+	private static final String LGSYNC_LDAP_BIND_KEYSTORE = "ranger.usersync.ldap.bindkeystore";
 	
-	private static final String LGSYNC_LDAP_BIND_ALIAS = "ldapGroupSync.ldapBindAlias";
+	private static final String LGSYNC_LDAP_BIND_ALIAS = "ranger.usersync.ldap.bindalias";
 	
-	private static final String LGSYNC_LDAP_BIND_PASSWORD = "ldapGroupSync.ldapBindPassword";	
+	private static final String LGSYNC_LDAP_BIND_PASSWORD = "ranger.usersync.ldap.ldapbindpassword";
 	
-	private static final String LGSYNC_LDAP_AUTHENTICATION_MECHANISM = "ldapGroupSync.ldapAuthenticationMechanism";
+	private static final String LGSYNC_LDAP_AUTHENTICATION_MECHANISM = "ranger.usersync.ldap.authentication.mechanism";
   private static final String DEFAULT_AUTHENTICATION_MECHANISM = "simple";
 
-  private static final String LGSYNC_SEARCH_BASE = "ldapGroupSync.searchBase";
+  private static final String LGSYNC_SEARCH_BASE = "ranger.usersync.ldap.searchBase";
 
-  private static final String LGSYNC_USER_SEARCH_BASE = "ldapGroupSync.userSearchBase";
+  private static final String LGSYNC_USER_SEARCH_BASE = "ranger.usersync.ldap.user.searchbase";
 
-  private static final String LGSYNC_USER_SEARCH_SCOPE = "ldapGroupSync.userSearchScope";
+  private static final String LGSYNC_USER_SEARCH_SCOPE = "ranger.usersync.ldap.user.searchscope";
 
-	private static final String LGSYNC_USER_OBJECT_CLASS = "ldapGroupSync.userObjectClass";
+	private static final String LGSYNC_USER_OBJECT_CLASS = "ranger.usersync.ldap.user.objectclass";
   private static final String DEFAULT_USER_OBJECT_CLASS = "person";
 	
-	private static final String LGSYNC_USER_SEARCH_FILTER = "ldapGroupSync.userSearchFilter";
+	private static final String LGSYNC_USER_SEARCH_FILTER = "ranger.usersync.ldap.user.searchfilter";
 	
-	private static final String LGSYNC_USER_NAME_ATTRIBUTE = "ldapGroupSync.userNameAttribute";
+	private static final String LGSYNC_USER_NAME_ATTRIBUTE = "ranger.usersync.ldap.user.nameattribute";
   private static final String DEFAULT_USER_NAME_ATTRIBUTE = "cn";
 	
-	private static final String LGSYNC_USER_GROUP_NAME_ATTRIBUTE = "ldapGroupSync.userGroupNameAttribute";
+	private static final String LGSYNC_USER_GROUP_NAME_ATTRIBUTE = "ranger.usersync.ldap.user.groupnameattribute";
   private static final String DEFAULT_USER_GROUP_NAME_ATTRIBUTE = "memberof,ismemberof";
 	
 	public static final String UGSYNC_NONE_CASE_CONVERSION_VALUE = "none" ;
 	public static final String UGSYNC_LOWER_CASE_CONVERSION_VALUE = "lower" ;
 	public static final String UGSYNC_UPPER_CASE_CONVERSION_VALUE = "upper" ;
 	 
-	private static final String UGSYNC_USERNAME_CASE_CONVERSION_PARAM = "ldapGroupSync.username.caseConversion" ;
+	private static final String UGSYNC_USERNAME_CASE_CONVERSION_PARAM = "ranger.usersync.ldap.username.caseconversion" ;
   private static final String DEFAULT_UGSYNC_USERNAME_CASE_CONVERSION_VALUE = UGSYNC_LOWER_CASE_CONVERSION_VALUE  ;
 
-	private static final String UGSYNC_GROUPNAME_CASE_CONVERSION_PARAM = "ldapGroupSync.groupname.caseConversion" ;
+	private static final String UGSYNC_GROUPNAME_CASE_CONVERSION_PARAM = "ranger.usersync.ldap.groupname.caseconversion" ;
 	private static final String DEFAULT_UGSYNC_GROUPNAME_CASE_CONVERSION_VALUE = UGSYNC_LOWER_CASE_CONVERSION_VALUE ;
 	
 	private static final String DEFAULT_USER_GROUP_TEXTFILE_DELIMITER = ",";
 
-  private static final String LGSYNC_PAGED_RESULTS_ENABLED = "ldapGroupSync.pagedResultsEnabled";
+  private static final String LGSYNC_PAGED_RESULTS_ENABLED = "ranger.usersync.pagedresultsenabled";
   private static final boolean DEFAULT_LGSYNC_PAGED_RESULTS_ENABLED = true;
 
-  private static final String LGSYNC_PAGED_RESULTS_SIZE = "ldapGroupSync.pagedResultsSize";
+  private static final String LGSYNC_PAGED_RESULTS_SIZE = "ranger.usersync.pagedresultssize";
   private static final int DEFAULT_LGSYNC_PAGED_RESULTS_SIZE = 500;
 
-  private static final String LGSYNC_GROUP_SEARCH_ENABLED = "ldapGroupSync.groupSearchEnabled";
+  private static final String LGSYNC_GROUP_SEARCH_ENABLED = "ranger.usersync.group.searchenabled";
   private static final boolean DEFAULT_LGSYNC_GROUP_SEARCH_ENABLED = false;
 
-  private static final String LGSYNC_GROUP_USER_MAP_SYNC_ENABLED = "ldapGroupSync.groupUserMapSyncEnabled";
+  private static final String LGSYNC_GROUP_USER_MAP_SYNC_ENABLED = "ranger.usersync.group.usermapsyncenabled";
   private static final boolean DEFAULT_LGSYNC_GROUP_USER_MAP_SYNC_ENABLED = false;
 
-  private static final String LGSYNC_GROUP_SEARCH_BASE = "ldapGroupSync.groupSearchBase";
+  private static final String LGSYNC_GROUP_SEARCH_BASE = "ranger.usersync.group.searchbase";
 
-  private static final String LGSYNC_GROUP_SEARCH_SCOPE = "ldapGroupSync.groupSearchScope";
+  private static final String LGSYNC_GROUP_SEARCH_SCOPE = "ranger.usersync.group.searchscope";
 
-  private static final String LGSYNC_GROUP_OBJECT_CLASS = "ldapGroupSync.groupObjectClass";
+  private static final String LGSYNC_GROUP_OBJECT_CLASS = "ranger.usersync.group.objectclass";
   private static final String DEFAULT_LGSYNC_GROUP_OBJECT_CLASS = "groupofnames";
 
-  private static final String LGSYNC_GROUP_SEARCH_FILTER = "ldapGroupSync.groupSearchFilter";
+  private static final String LGSYNC_GROUP_SEARCH_FILTER = "ranger.usersync.group.searchfilter";
 
-  private static final String LGSYNC_GROUP_NAME_ATTRIBUTE = "ldapGroupSync.groupNameAttribute";
+  private static final String LGSYNC_GROUP_NAME_ATTRIBUTE = "ranger.usersync.group.nameattribute";
   private static final String DEFAULT_LGSYNC_GROUP_NAME_ATTRIBUTE = "cn";
 
-  private static final String LGSYNC_GROUP_MEMBER_ATTRIBUTE_NAME = "ldapGroupSync.groupMemberAttributeName";
+  private static final String LGSYNC_GROUP_MEMBER_ATTRIBUTE_NAME = "ranger.usersync.group.memberattributename";
   private static final String DEFAULT_LGSYNC_GROUP_MEMBER_ATTRIBUTE_NAME = "member";
 
-	private static final String SYNC_POLICY_MGR_KEYSTORE = "userSync.policyMgrKeystore";
+	private static final String SYNC_POLICY_MGR_KEYSTORE = "ranger.usersync.policymgr.keystore";
 
-	private static final String SYNC_POLICY_MGR_ALIAS = "userSync.policyMgrAlias";
+	private static final String SYNC_POLICY_MGR_ALIAS = "ranger.usersync.policymgr.alias";
 
-	private static final String SYNC_POLICY_MGR_PASSWORD = "userSync.policyMgrPassword";
+	private static final String SYNC_POLICY_MGR_PASSWORD = "ranger.usersync.policymgr.password";
 
-	private static final String SYNC_POLICY_MGR_USERNAME = "userSync.policyMgrUserName";
+	private static final String SYNC_POLICY_MGR_USERNAME = "ranger.usersync.policymgr.username";
 
 	private static final String DEFAULT_POLICYMGR_USERNAME = "rangerusersync";
 
@@ -177,13 +186,56 @@ public class UserGroupSyncConfig  {
 		init() ;
 	}
 	
-	
 	private void init() {
+		readConfigFile(CONFIG_FILE);
+		readConfigFile(DEFAULT_CONFIG_FILE);
+	}
+
+	private void readConfigFile(String fileName) {
 		try {
-			InputStream in = getFileInputStream(CONFIG_FILE) ;
+			InputStream in = getFileInputStream(fileName);
 			if (in != null) {
 				try {
-					prop.load(in) ;
+//					prop.load(in) ;
+					DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+							.newInstance();
+					xmlDocumentBuilderFactory.setIgnoringComments(true);
+					xmlDocumentBuilderFactory.setNamespaceAware(true);
+					DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+							.newDocumentBuilder();
+					Document xmlDocument = xmlDocumentBuilder.parse(in);
+					xmlDocument.getDocumentElement().normalize();
+
+					NodeList nList = xmlDocument
+							.getElementsByTagName("property");
+
+					for (int temp = 0; temp < nList.getLength(); temp++) {
+
+						Node nNode = nList.item(temp);
+
+						if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+							Element eElement = (Element) nNode;
+
+							String propertyName = "";
+							String propertyValue = "";
+							if (eElement.getElementsByTagName("name").item(
+									0) != null) {
+								propertyName = eElement
+										.getElementsByTagName("name")
+										.item(0).getTextContent().trim();
+							}
+							if (eElement.getElementsByTagName("value")
+									.item(0) != null) {
+								propertyValue = eElement
+										.getElementsByTagName("value")
+										.item(0).getTextContent().trim();
+							}
+
+							prop.put(propertyName, propertyValue);
+
+						}
+					}
 				}
 				finally {
 					try {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
----------------------------------------------------------------------
diff --git a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
index 75f3673..ece0a81 100644
--- a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
+++ b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/RemoteUnixLoginModule.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
- package org.apache.ranger.authentication.unix.jaas;
+package org.apache.ranger.authentication.unix.jaas;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -50,23 +50,29 @@ import javax.security.auth.callback.PasswordCallback;
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.login.LoginException;
 import javax.security.auth.spi.LoginModule;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 
-public class RemoteUnixLoginModule implements LoginModule {
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 	
+public class RemoteUnixLoginModule implements LoginModule {
 	
 	private static final String REMOTE_UNIX_AUTHENICATION_CONFIG_FILE_PARAM = "configFile";
 
-	private static final String DEBUG_PARAM = "debug";
-	private static final String REMOTE_LOGIN_HOST_PARAM = "authServiceHostName";
-	private static final String REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM = "authServicePort";
-	private static final String SSL_KEYSTORE_PATH_PARAM = "keyStore";
-	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "keyStorePassword";
-	private static final String SSL_TRUSTSTORE_PATH_PARAM = "trustStore";
-	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "trustStorePassword";
-	private static final String SSL_ENABLED_PARAM = "sslEnabled";
-	private static final String SERVER_CERT_VALIDATION_PARAM = "serverCertValidation" ;
+	private static final String DEBUG_PARAM = "ranger.unixauth.debug";
+	private static final String REMOTE_LOGIN_HOST_PARAM = "ranger.unixauth.service.hostname";
+	private static final String REMOTE_LOGIN_AUTH_SERVICE_PORT_PARAM = "ranger.unixauth.service.port";
+	private static final String SSL_KEYSTORE_PATH_PARAM = "ranger.unixauth.keystore";
+	private static final String SSL_KEYSTORE_PATH_PASSWORD_PARAM = "ranger.unixauth.keystore.password";
+	private static final String SSL_TRUSTSTORE_PATH_PARAM = "ranger.unixauth.truststore";
+	private static final String SSL_TRUSTSTORE_PATH_PASSWORD_PARAM = "ranger.unixauth.truststore.password";
+	private static final String SSL_ENABLED_PARAM = "ranger.unixauth.ssl.enabled";
+	private static final String SERVER_CERT_VALIDATION_PARAM = "ranger.unixauth.server.cert.validation";
 	
-	private static final String JAAS_ENABLED_PARAM = "remoteLoginEnabled" ;
+	private static final String JAAS_ENABLED_PARAM = "ranger.unixauth.remote.login.enabled";
 
 	private static final String SSL_ALGORITHM = "TLS";
 
@@ -147,7 +153,50 @@ public class RemoteUnixLoginModule implements LoginModule {
 				if (in != null) {
 					try {
 						config = new Properties() ;
-						config.load(in);
+						// config.load(in);
+						DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory
+								.newInstance();
+						xmlDocumentBuilderFactory.setIgnoringComments(true);
+						xmlDocumentBuilderFactory.setNamespaceAware(true);
+						DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory
+								.newDocumentBuilder();
+						Document xmlDocument = xmlDocumentBuilder.parse(in);
+						xmlDocument.getDocumentElement().normalize();
+
+						NodeList nList = xmlDocument
+								.getElementsByTagName("property");
+
+						for (int temp = 0; temp < nList.getLength(); temp++) {
+
+							Node nNode = nList.item(temp);
+
+							if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+
+								Element eElement = (Element) nNode;
+
+								String propertyName = "";
+								String propertyValue = "";
+								if (eElement.getElementsByTagName("name").item(
+										0) != null) {
+									propertyName = eElement
+											.getElementsByTagName("name")
+											.item(0).getTextContent().trim();
+								}
+								if (eElement.getElementsByTagName("value")
+										.item(0) != null) {
+									propertyValue = eElement
+											.getElementsByTagName("value")
+											.item(0).getTextContent().trim();
+								}
+
+								config.put(propertyName, propertyValue);
+
+							}
+							logError("ranger site properties loaded successfully.");
+						}
+					} catch (Exception e) {
+						logError("Error loading : " + e);
+
 					}
 					finally {
 						try {
@@ -211,7 +260,6 @@ public class RemoteUnixLoginModule implements LoginModule {
 		SSLEnabled = (val != null) && val.trim().equalsIgnoreCase("true") ;
 		log("SSLEnabled:" + SSLEnabled);
 
-		
 		if (SSLEnabled) {
 			trustStorePath = (String) options.get(SSL_TRUSTSTORE_PATH_PARAM);
 			log("trustStorePath:" + trustStorePath);
@@ -268,7 +316,6 @@ public class RemoteUnixLoginModule implements LoginModule {
 			
 			password = passwordCallback.getPassword();
 			
-
 			log("userName:" + userName);
 			log("modified UserName:" + modifiedUserName);
 			// log("password:" + new String(password));

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/conf.dist/ranger-ugsync-default.xml
----------------------------------------------------------------------
diff --git a/unixauthservice/conf.dist/ranger-ugsync-default.xml b/unixauthservice/conf.dist/ranger-ugsync-default.xml
new file mode 100644
index 0000000..4175986
--- /dev/null
+++ b/unixauthservice/conf.dist/ranger-ugsync-default.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+	<property>
+		<name>ranger.usersync.port</name>
+		<value>5151</value>
+	</property>
+	<property>
+		<name>ranger.usersync.ssl</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.usersync.passwordvalidator.path</name>
+		<value>./native/credValidator.uexe</value>
+	</property>
+	<property>
+		<name>ranger.usersync.enabled</name>
+		<value>true</value>
+	</property>
+	<property>
+		<name>ranger.usersync.policymanager.maxrecordsperapicall</name>
+		<value>1000</value>
+	</property>
+	<property>
+		<name>ranger.usersync.policymanager.mockrun</name>
+		<value>false</value>
+	</property>
+	<property>
+		<name>ranger.usersync.unix.minUserId</name>
+		<value>500</value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.username.caseconversion</name>
+		<value>lower</value>
+	</property>
+	<property>
+		<name>ranger.usersync.ldap.groupname.caseconversion</name>
+		<value>lower</value>
+	</property>
+	<property>
+		<name>ranger.usersync.logdir</name>
+		<value>./log</value>
+	</property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/conf.dist/unixauthservice.properties
----------------------------------------------------------------------
diff --git a/unixauthservice/conf.dist/unixauthservice.properties b/unixauthservice/conf.dist/unixauthservice.properties
deleted file mode 100644
index d1a1f5f..0000000
--- a/unixauthservice/conf.dist/unixauthservice.properties
+++ /dev/null
@@ -1,248 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-authServicePort = 5151
-
-useSSL = true
-
-#
-# SSL Parameters
-#
-
-keyStore 			= 	./conf/cert/unixauthservice.jks
-keyStorePassword	=	UnIx529p
-#trustStore			=	./conf/cert/mytruststore.jks
-#trustStorePassword  =   changeit
-passwordValidatorPath = ./native/credValidator.uexe
-
-#
-# Admin Groups
-#
-#admin.users   =
-
-#
-# Admin ROLE to be added
-#
-#admin.roleNames = ROLE_ADMIN
-
-#
-# User Group Synchronization
-#
-usergroupSync.enabled = true
-
-usergroupSync.source.impl.class=org.apache.ranger.unixusersync.process.UnixUserGroupBuilder
-
-usergroupSync.sink.impl.class=org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder
-
-
-#
-# UserGroupSink: policy manager
-#
-usergroupSync.policymanager.baseURL =
-
-usergroupSync.policymanager.MaxRecordsPerAPICall = 1000
-
-usergroupSync.policymanager.mockRun = false
-
-#
-# Relevant only if sync source is unix
-usergroupSync.unix.minUserId = 500
-
-# sync interval in milli seconds
-# user, groups would be synced again at the end of each sync interval
-#
-# default value is 300000(5min)
-# if value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.UnixUserGroupBuilder
-#
-# default value is 21600000(360min)
-# if value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-usergroupSync.sleepTimeInMillisBetweenSyncCycle =
-
-# sync source class
-# we provide 3 classes out of box
-# org.apache.ranger.unixusersync.process.UnixUserGroupBuilder
-# org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder
-# org.apache.ranger.unixusersync.process.FileSourceUserGroupBuilder
-# default value:  org.apache.ranger.unixusersync.process.UnixUserGroupBuilder
-usergroupSync.source.impl.class =
-
-# ---------------------------------------------------------------
-# The following properties are relevant
-# only if value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.FileSourceUserGroupBuilder
-# usergroupSync.filesource.file property holds the path of the UserGroup Map file to be submmited.
-# e.g usergroupSync.filesource.file = /tmp/usergroup.json or /tmp/usergroup.csv or /tmp/usergroup.txt
-# JSON File Format: 
-#	{
-#	 {"user1":["group0","group18","group6","group7","group26","group24","group19","group3","group5"]},
-#	 {"user2":["group0","group18","group6","]},
-#	 {"user3":[]},
-#	 {"user4":["group0","group18"]}
-# 	}
-# Text File Format:(.txt,.csv).Delimiter for the text file can be anything like tab, comma or any desired delimiter.
-# default delimiter value : ,
-# File Format:
-#	"user1","group0","group18","group6","group7","group26","group24","group19","group3","group5"
-#	"user2","group0","group18","group6"
-#	"user3",
-#	"user4","group0","group18"
-# usergroupSync.filesource.text.delimiter property should have the right delimiter if the file delimiter is other than ,
-# e.g To input a tab delimited file use usergroupSync.filesource.text.delimiter = \t 
-# if the file is .json JSONParser will be used instead of delimiter.
-# ---------------------------------------------------------------
-usergroupSync.filesource.file =
-usergroupSync.filesource.text.delimiter = ,
-
-# ---------------------------------------------------------------
-# The following properties are relevant
-# only if value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-# ---------------------------------------------------------------
-
-# URL of source ldap
-# a sample value would be:  ldap://ldap.example.com:389
-# Must specify a value if  value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-ldapGroupSync.ldapUrl =
-
-# ldap bind dn used to connect to ldap and query for users and groups
-# a sample value would be cn=admin,ou=users,dc=hadoop,dc=apache,dc-org
-# must specify a value if  value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-# Must specify a value if  value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-ldapGroupSync.ldapBindDn =
-
-# ldap bind password for the bind dn specified above
-# please ensure read access to this file  is limited to root, to protect the password
-# Must specify a value if  value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-# unless anonymous search is allowed by the directory on users and groups
-ldapGroupSync.ldapBindPassword =
-ldapGroupSync.ldapBindAlias =
-ldapGroupSync.ldapBindKeystore =
-
-# search base for users and groups
-# sample value would be dc=hadoop,dc=apache,dc=org
-ldapGroupSync.searchBase= 
-
-# search base for users
-# sample value would be ou=users,dc=hadoop,dc=apache,dc=org
-# overrides value specified in ldapGroupSync.searchBase
-# if a value is not specified, takes the value of ldapGroupSync.searchBase
-# Must specify a value if  value of usergroupSync.source.impl.class is
-# org.apache.ranger.unixusersync.process.LdapUserGroupBuilder
-# and value is not specified for ldapGroupSync.searchBase
-ldapGroupSync.userSearchBase =
-
-# search scope for the users, only base, one and sub are supported values
-# please customize the value to suit your deployment
-# default value: sub
-ldapGroupSync.userSearchScope =
-
-# objectclass to identify user entries
-# please customize the value to suit your deployment
-# default value: person
-ldapGroupSync.userObjectClass = person
-
-# optional additional filter constraining the users selected for syncing
-# a sample value would be (dept=eng)
-# please customize the value to suit your deployment
-# default value is empty
-ldapGroupSync.userSearchFilter =
-
-# attribute from user entry that would be treated as user name
-# please customize the value to suit your deployment
-# default value: cn
-ldapGroupSync.userNameAttribute = cn
-
-# attribute from user entry whose values would be treated as
-# group values to be pushed into Policy Manager database
-# You could provide multiple attribute names separated by comma
-# default value: memberof, ismemberof
-ldapGroupSync.userGroupNameAttribute =  memberof, ismemberof
-
-#
-# UserSync - Case Conversion Flags
-# possible values:  none, lower, upper
-ldapGroupSync.username.caseConversion=lower
-ldapGroupSync.groupname.caseConversion=lower
-#user sync log path
-logdir=/var/log/ranger/usersync
-
-# do we want to do ldapsearch to find groups instead of relying on user entry attributes
-# valid values: true, false
-# any value other than true would be treated as false
-# default value: false
-ldapGroupSync.groupSearchEnabled=
-
-# do we want to do ldapsearch to find groups instead of relying on user entry attributes and
-# sync memberships of those groups
-# valid values: true, false
-# any value other than true would be treated as false
-# default value: false
-ldapGroupSync.groupUserMapSyncEnabled=
-
-# search base for groups
-# sample value would be ou=groups,dc=hadoop,dc=apache,dc=org
-# overrides value specified in ldapGroupSync.searchBase, ldapGroupSync.userSearchBase
-# if a value is not specified, takes the value of ldapGroupSync.searchBase
-# if  ldapGroupSync.searchBase is also not specified, takes the value of ldapGroupSync.userSearchBase
-ldapGroupSync.groupSearchBase=
-
-# search scope for the groups, only base, one and sub are supported values
-# please customize the value to suit your deployment
-# default value: sub
-ldapGroupSync.groupSearchScope=
-
-# objectclass to identify group entries
-# please customize the value to suit your deployment
-# default value: groupofnames
-ldapGroupSync.groupObjectClass=
-
-# optional additional filter constraining the groups selected for syncing
-# a sample value would be (dept=eng)
-# please customize the value to suit your deployment
-# default value is empty
-ldapGroupSync.groupSearchFilter=
-
-# attribute from group entry that would be treated as group name
-# please customize the value to suit your deployment
-# default value: cn
-ldapGroupSync.groupNameAttribute=
-
-# attribute from group entry that is list of members
-# please customize the value to suit your deployment
-# default value: member
-ldapGroupSync.groupMemberAttributeName=
-
-# do we want to use paged results control during ldapsearch for user entries
-# valid values: true, false
-# any value other than true would be treated as false
-# default value: true
-# if the value is false, typical AD would return would not returm more than 1000 entries
-ldapGroupSync.pagedResultsEnabled=
-
-# page size for paged results control
-# search results would be returned page by page with the specified number of entries per page
-# default value: 500
-ldapGroupSync.pagedResultsSize=
-userSync.policyMgrUserName =rangerusersync
-userSync.policyMgrPassword =
-userSync.policyMgrAlias =policymgr.user.password
-userSync.policyMgrKeystore =/usr/lib/xausersync/.jceks/xausersync.jceks
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/install.properties
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/install.properties b/unixauthservice/scripts/install.properties
index 1f8512c..846a6ac 100644
--- a/unixauthservice/scripts/install.properties
+++ b/unixauthservice/scripts/install.properties
@@ -19,11 +19,11 @@
 #
 #  POLICY_MGR_URL = http://policymanager.xasecure.net:6080
 #
-POLICY_MGR_URL = 
+POLICY_MGR_URL = http://localhost:6080
 
 # sync source,  only unix and ldap are supported at present
 # defaults to unix
-SYNC_SOURCE = 
+SYNC_SOURCE = unix
 
 
 #
@@ -39,8 +39,8 @@ MIN_UNIX_USER_ID_TO_SYNC = 1000
 SYNC_INTERVAL = 
 
 #User and group for the usersync process
-unix_user=ranger
-unix_group=ranger
+unix_user=sneethiraj
+unix_group=staff
 
 
 # ---------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/11bb55ba/unixauthservice/scripts/ranger-usersync-services.sh
----------------------------------------------------------------------
diff --git a/unixauthservice/scripts/ranger-usersync-services.sh b/unixauthservice/scripts/ranger-usersync-services.sh
index 65f2e39..3ec1999 100644
--- a/unixauthservice/scripts/ranger-usersync-services.sh
+++ b/unixauthservice/scripts/ranger-usersync-services.sh
@@ -45,13 +45,8 @@ if [ ${action^^} == "START" ]; then
         	export PATH=$JAVA_HOME/bin:$PATH
 	fi
 
-	logdir=`grep -P '^[ \t]*logdir[ \t]*=' ${cdir}/install.properties | awk -F= '{ print $2 }' | tr '\t' ' ' | sed -e 's:[ ]::g'`
-	if [ ! -d ${logdir} ]
-	then
         logdir=/var/log/ranger/usersync
-        [ ! -d ${logdir} ] && mkdir -p ${logdir}
-        chown ranger:ranger ${logdir}
-	fi
+
 	cp="${cdir}/dist/*:${cdir}/lib/*:${cdir}/conf"
 
     if [ -f $pidf ]; then
@@ -82,7 +77,6 @@ if [ ${action^^} == "START" ]; then
 	exit;
 
 elif [ ${action^^} == "STOP" ]; then
-	port=`grep  '^[ ]*authServicePort' ${cdir}/conf/unixauthservice.properties | awk -F= '{ print $2 }' | awk '{ print $1 }'`
 
     if [ -f $pidf ]; then
             pidf=/var/run/ranger/usersync.pid