diff --git a/agents-audit/dest-solr/pom.xml b/agents-audit/dest-solr/pom.xml
index b9e562ca06..067b69298c 100644
--- a/agents-audit/dest-solr/pom.xml
+++ b/agents-audit/dest-solr/pom.xml
@@ -114,6 +114,12 @@
org.eclipse.jetty
jetty-client
${jetty-client.version}
+
+
+ *
+ *
+
+
org.slf4j
diff --git a/agents-common/pom.xml b/agents-common/pom.xml
index 52cce7e2ce..78b9026d97 100644
--- a/agents-common/pom.xml
+++ b/agents-common/pom.xml
@@ -55,6 +55,10 @@
jakarta.activation
jakarta.activation-api
+
+ org.eclipse.jetty
+ *
+
@@ -105,6 +109,10 @@
com.sun.jersey.contribs
*
+
+ org.eclipse.jetty
+ *
+
@@ -120,6 +128,10 @@
com.sun.jersey.contribs
*
+
+ org.eclipse.jetty
+ *
+
@@ -161,6 +173,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/agents-cred/pom.xml b/agents-cred/pom.xml
index 753a00989d..7e7c00be1e 100644
--- a/agents-cred/pom.xml
+++ b/agents-cred/pom.xml
@@ -60,16 +60,34 @@
org.apache.hadoop
hadoop-auth
${hadoop.version}
+
+
+ org.eclipse.jetty
+ *
+
+
org.apache.hadoop
hadoop-client-api
${hadoop.version}
+
+
+ org.eclipse.jetty
+ *
+
+
org.apache.hadoop
hadoop-client-runtime
${hadoop.version}
+
+
+ org.eclipse.jetty
+ *
+
+
org.slf4j
diff --git a/audit-server/audit-dispatcher/dispatcher-common/pom.xml b/audit-server/audit-dispatcher/dispatcher-common/pom.xml
index 3b717af732..1092a63918 100644
--- a/audit-server/audit-dispatcher/dispatcher-common/pom.xml
+++ b/audit-server/audit-dispatcher/dispatcher-common/pom.xml
@@ -71,6 +71,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/audit-server/audit-dispatcher/dispatcher-hdfs/pom.xml b/audit-server/audit-dispatcher/dispatcher-hdfs/pom.xml
index f1a07a79aa..7aaa7118f5 100644
--- a/audit-server/audit-dispatcher/dispatcher-hdfs/pom.xml
+++ b/audit-server/audit-dispatcher/dispatcher-hdfs/pom.xml
@@ -97,6 +97,10 @@
org.apache.hadoop
hadoop-client-api
+
+ org.eclipse.jetty
+ *
+
@@ -126,6 +130,10 @@
org.apache.hadoop
hadoop-client-api
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/audit-server/audit-ingestor/pom.xml b/audit-server/audit-ingestor/pom.xml
index 19fa95d9e1..bb78a46686 100644
--- a/audit-server/audit-ingestor/pom.xml
+++ b/audit-server/audit-ingestor/pom.xml
@@ -163,6 +163,10 @@
org.codehaus.jackson
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/audit-server/pom.xml b/audit-server/pom.xml
index 22d246b2d0..2a3d5e8a95 100644
--- a/audit-server/pom.xml
+++ b/audit-server/pom.xml
@@ -115,12 +115,24 @@
org.apache.hadoop
hadoop-azure
${hadoop.version}
+
+
+ org.eclipse.jetty
+ *
+
+
org.apache.hadoop
hadoop-common
${hadoop.version}
+
+
+ org.eclipse.jetty
+ *
+
+
org.apache.hadoop
diff --git a/credentialbuilder/pom.xml b/credentialbuilder/pom.xml
index c0257fb747..be0d98fe4a 100644
--- a/credentialbuilder/pom.xml
+++ b/credentialbuilder/pom.xml
@@ -105,6 +105,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/dev-support/ranger-docker/scripts/hadoop/ranger-hadoop-setup.sh b/dev-support/ranger-docker/scripts/hadoop/ranger-hadoop-setup.sh
index d2b4c24606..643b394703 100755
--- a/dev-support/ranger-docker/scripts/hadoop/ranger-hadoop-setup.sh
+++ b/dev-support/ranger-docker/scripts/hadoop/ranger-hadoop-setup.sh
@@ -66,6 +66,14 @@ else
echo "WARNING: Tez directory not found at /opt/tez"
fi
+# Audit spool dirs (Solr/HDFS/audit-server destinations)
+mkdir -p /var/log/hadoop/hdfs/audit/solr/spool \
+ /var/log/hadoop/hdfs/audit/hdfs/spool \
+ /var/log/hadoop/hdfs/audit/audit-ingestor/spool \
+ /var/log/hadoop/hdfs/audit/archive
+chown -R hdfs:hadoop /var/log/hadoop/hdfs/audit
+chmod -R 775 /var/log/hadoop/hdfs/audit
+
cd ${RANGER_HOME}/ranger-hdfs-plugin
./enable-hdfs-plugin.sh
diff --git a/dev-support/ranger-docker/scripts/hadoop/ranger-hdfs-plugin-install.properties b/dev-support/ranger-docker/scripts/hadoop/ranger-hdfs-plugin-install.properties
index 8d51f95512..a6982b1ec0 100644
--- a/dev-support/ranger-docker/scripts/hadoop/ranger-hdfs-plugin-install.properties
+++ b/dev-support/ranger-docker/scripts/hadoop/ranger-hdfs-plugin-install.properties
@@ -20,11 +20,11 @@ COMPONENT_INSTALL_DIR_NAME=/opt/hadoop
CUSTOM_USER=hdfs
CUSTOM_GROUP=hadoop
-XAAUDIT.AUDITSERVER.ENABLE=true
+XAAUDIT.AUDITSERVER.ENABLE=false
XAAUDIT.AUDITSERVER.URL=http://ranger-audit-ingestor.rangernw:7081
XAAUDIT.AUDITSERVER.FILE_SPOOL_DIR=/var/log/hadoop/hdfs/audit/audit-ingestor/spool
-XAAUDIT.SOLR.IS_ENABLED=false
+XAAUDIT.SOLR.IS_ENABLED=true
XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
XAAUDIT.SOLR.SOLR_URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
@@ -43,7 +43,7 @@ XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60
XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600
XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10
-XAAUDIT.SOLR.ENABLE=false
+XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
diff --git a/dev-support/ranger-docker/scripts/hadoop/test-hdfs-audit-to-solr.sh b/dev-support/ranger-docker/scripts/hadoop/test-hdfs-audit-to-solr.sh
new file mode 100755
index 0000000000..998d5be54d
--- /dev/null
+++ b/dev-support/ranger-docker/scripts/hadoop/test-hdfs-audit-to-solr.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+# Verify HDFS plugin writes authorization audits to Solr ranger_audits core
+set -euo pipefail
+
+SOLR_HOST="${SOLR_HOST:-ranger-solr.rangernw}"
+SOLR_BASE="http://${SOLR_HOST}:8983"
+REPO="${REPO:-dev_hdfs}"
+HADOOP_HOST="${HADOOP_HOST:-ranger-hadoop.rangernw}"
+
+pass() { echo "PASS: $*"; }
+fail() { echo "FAIL: $*"; exit 1; }
+
+echo "=== 1. Hadoop + HDFS plugin healthy ==="
+docker exec ranger-hadoop bash -c 'ps aux | grep org.apache.hadoop.hdfs.server.namenode.NameNode | grep -v grep' | grep -q NameNode || fail "NameNode not running"
+docker exec ranger-hadoop grep -A1 'xasecure.audit.destination.solr' /opt/hadoop/etc/hadoop/ranger-hdfs-audit.xml | grep -q 'true' || fail "Solr audit not enabled in ranger-hdfs-audit.xml"
+docker exec ranger-hadoop test -d /var/log/hadoop/hdfs/audit/solr/spool || fail "Solr audit spool dir missing"
+pass "HDFS stack up (Solr audit enabled, spool dir present)"
+
+echo "=== 2. Solr ranger_audits core reachable ==="
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -sf --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json' >/dev/null
+" || fail "Cannot query ranger_audits"
+pass "Solr audit core reachable"
+
+echo "=== 3. Baseline audit count (repo=${REPO}) ==="
+before=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "Before: ${before}"
+
+echo "=== 4. HDFS access (testuser1) to generate audit ==="
+docker exec ranger-hadoop bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_u
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/testuser1.keytab testuser1/${HADOOP_HOST}@EXAMPLE.COM
+ klist
+ /opt/hadoop/bin/hdfs dfs -ls /
+ /opt/hadoop/bin/hdfs dfs -ls /tmp
+ /opt/hadoop/bin/hdfs dfs -stat '%n' /user/testuser1 2>/dev/null || /opt/hadoop/bin/hdfs dfs -ls /user
+"
+
+echo "Waiting 25s for Solr audit flush..."
+sleep 25
+
+after=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "After: ${after}"
+
+[ "${after}" -gt "${before}" ] || fail "HDFS audit count did not increase (${before} -> ${after})"
+pass "HDFS audit write to Solr (${before} -> ${after})"
+
+echo ""
+echo "=== ALL HDFS->SOLR AUDIT CHECKS PASSED ==="
diff --git a/dev-support/ranger-docker/scripts/hbase/ranger-hbase-plugin-install.properties b/dev-support/ranger-docker/scripts/hbase/ranger-hbase-plugin-install.properties
index 1d64080bd7..bb13a72cd1 100644
--- a/dev-support/ranger-docker/scripts/hbase/ranger-hbase-plugin-install.properties
+++ b/dev-support/ranger-docker/scripts/hbase/ranger-hbase-plugin-install.properties
@@ -20,14 +20,14 @@ COMPONENT_INSTALL_DIR_NAME=/opt/hbase
CUSTOM_USER=hbase
CUSTOM_GROUP=hadoop
-XAAUDIT.AUDITSERVER.ENABLE=true
+XAAUDIT.AUDITSERVER.ENABLE=false
XAAUDIT.AUDITSERVER.URL=http://ranger-audit-ingestor.rangernw:7081
XAAUDIT.AUDITSERVER.FILE_SPOOL_DIR=/var/log/hadoop/hbase/audit/audit-ingestor/spool
XAAUDIT.SUMMARY.ENABLE=true
UPDATE_XAPOLICIES_ON_GRANT_REVOKE=true
-XAAUDIT.SOLR.IS_ENABLED=false
+XAAUDIT.SOLR.IS_ENABLED=true
XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
XAAUDIT.SOLR.SOLR_URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
@@ -46,7 +46,7 @@ XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60
XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600
XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10
-XAAUDIT.SOLR.ENABLE=false
+XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
diff --git a/dev-support/ranger-docker/scripts/hbase/ranger-hbase-setup.sh b/dev-support/ranger-docker/scripts/hbase/ranger-hbase-setup.sh
index 308883a047..4050b9fe3e 100755
--- a/dev-support/ranger-docker/scripts/hbase/ranger-hbase-setup.sh
+++ b/dev-support/ranger-docker/scripts/hbase/ranger-hbase-setup.sh
@@ -32,7 +32,9 @@ fi
cp ${RANGER_SCRIPTS}/hbase-site.xml /opt/hbase/conf/hbase-site.xml
cp ${RANGER_SCRIPTS}/core-site.xml /opt/hbase/conf/core-site.xml
-chown -R hbase:hadoop /opt/hbase/
+mkdir -p /var/log/hadoop/hbase/audit/solr/spool \
+ /var/log/hadoop/hbase/audit/audit-ingestor/spool
+chown -R hbase:hadoop /opt/hbase/ /var/log/hadoop/hbase
cd ${RANGER_HOME}/ranger-hbase-plugin
./enable-hbase-plugin.sh
diff --git a/dev-support/ranger-docker/scripts/hbase/test-hbase-audit-to-solr.sh b/dev-support/ranger-docker/scripts/hbase/test-hbase-audit-to-solr.sh
new file mode 100755
index 0000000000..40a9ca431e
--- /dev/null
+++ b/dev-support/ranger-docker/scripts/hbase/test-hbase-audit-to-solr.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+# Verify HBase plugin writes authorization audits to Solr ranger_audits core
+set -euo pipefail
+
+SOLR_HOST="${SOLR_HOST:-ranger-solr.rangernw}"
+SOLR_BASE="http://${SOLR_HOST}:8983"
+REPO="${REPO:-dev_hbase}"
+HBASE_HOST="${HBASE_HOST:-ranger-hbase.rangernw}"
+
+pass() { echo "PASS: $*"; }
+fail() { echo "FAIL: $*"; exit 1; }
+
+echo "=== 1. HBase + plugin healthy ==="
+docker exec ranger-hbase bash -c 'ps aux | grep org.apache.hadoop.hbase.master.HMaster | grep -v grep' | grep -q HMaster || fail "HMaster not running"
+docker exec ranger-hbase grep -A1 'xasecure.audit.destination.solr' /opt/hbase/conf/ranger-hbase-audit.xml | grep -q 'true' || fail "Solr audit not enabled in ranger-hbase-audit.xml"
+docker exec ranger-hbase test -d /var/log/hadoop/hbase/audit/solr/spool || fail "Solr audit spool dir missing"
+pass "HBase stack up (Solr audit enabled, spool dir present)"
+
+echo "=== 2. Solr ranger_audits core reachable ==="
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -sf --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json' >/dev/null
+" || fail "Cannot query ranger_audits"
+pass "Solr audit core reachable"
+
+echo "=== 3. Baseline audit count (repo=${REPO}) ==="
+before=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "Before: ${before}"
+
+echo "=== 4. HBase access (testuser1) to generate audit ==="
+set +e
+docker exec ranger-hbase bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_u
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/testuser1.keytab testuser1/${HBASE_HOST}@EXAMPLE.COM
+ klist
+ TABLE=test_ranger_audit_\$(date +%s)
+ echo \"create '\${TABLE}', 'cf'\" | /opt/hbase/bin/hbase shell -n 2>&1 || true
+ echo 'list' | /opt/hbase/bin/hbase shell -n 2>&1 || true
+"
+set -e
+
+echo "Waiting 30s for Solr audit flush..."
+sleep 30
+
+after=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "After: ${after}"
+
+[ "${after}" -gt "${before}" ] || fail "HBase audit count did not increase (${before} -> ${after})"
+pass "HBase audit write to Solr (${before} -> ${after})"
+
+echo ""
+echo "=== ALL HBASE->SOLR AUDIT CHECKS PASSED ==="
diff --git a/dev-support/ranger-docker/scripts/hive/ranger-hive-plugin-install.properties b/dev-support/ranger-docker/scripts/hive/ranger-hive-plugin-install.properties
index a8e84643c9..058176dc19 100644
--- a/dev-support/ranger-docker/scripts/hive/ranger-hive-plugin-install.properties
+++ b/dev-support/ranger-docker/scripts/hive/ranger-hive-plugin-install.properties
@@ -21,11 +21,11 @@ UPDATE_XAPOLICIES_ON_GRANT_REVOKE=true
CUSTOM_USER=hive
CUSTOM_GROUP=hadoop
-XAAUDIT.AUDITSERVER.ENABLE=true
+XAAUDIT.AUDITSERVER.ENABLE=false
XAAUDIT.AUDITSERVER.URL=http://ranger-audit-ingestor.rangernw:7081
XAAUDIT.AUDITSERVER.FILE_SPOOL_DIR=/var/log/hive/audit/audit-ingestor/spool
-XAAUDIT.SOLR.IS_ENABLED=false
+XAAUDIT.SOLR.IS_ENABLED=true
XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
XAAUDIT.SOLR.SOLR_URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
@@ -44,7 +44,7 @@ XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60
XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600
XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10
-XAAUDIT.SOLR.ENABLE=false
+XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
diff --git a/dev-support/ranger-docker/scripts/hive/ranger-hive-setup.sh b/dev-support/ranger-docker/scripts/hive/ranger-hive-setup.sh
index 150fd701f5..00789b3490 100755
--- a/dev-support/ranger-docker/scripts/hive/ranger-hive-setup.sh
+++ b/dev-support/ranger-docker/scripts/hive/ranger-hive-setup.sh
@@ -203,7 +203,9 @@ fi
su -c "${HIVE_HOME}/bin/schematool -dbType ${RANGER_DB_TYPE} -initSchema" hive
mkdir -p /opt/hive/logs
-chown -R hive:hadoop /opt/hive/
+mkdir -p /var/log/hive/audit/solr/spool \
+ /var/log/hive/audit/audit-ingestor/spool
+chown -R hive:hadoop /opt/hive/ /var/log/hive
chmod g+w /opt/hive/logs
cd ${RANGER_HOME}/ranger-hive-plugin
diff --git a/dev-support/ranger-docker/scripts/hive/test-hive-audit-to-solr.sh b/dev-support/ranger-docker/scripts/hive/test-hive-audit-to-solr.sh
new file mode 100755
index 0000000000..27961b683b
--- /dev/null
+++ b/dev-support/ranger-docker/scripts/hive/test-hive-audit-to-solr.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+# Verify Hive plugin writes authorization audits to Solr ranger_audits core
+set -euo pipefail
+
+SOLR_HOST="${SOLR_HOST:-ranger-solr.rangernw}"
+SOLR_BASE="http://${SOLR_HOST}:8983"
+REPO="${REPO:-dev_hive}"
+HIVE_HOST="${HIVE_HOST:-ranger-hive.rangernw}"
+
+pass() { echo "PASS: $*"; }
+fail() { echo "FAIL: $*"; exit 1; }
+
+echo "=== 1. Hive + plugin healthy ==="
+docker exec ranger-hive bash -c 'ps aux | grep org.apache.hive.service.server.HiveServer2 | grep -v grep' | grep -q HiveServer2 || fail "HiveServer2 not running"
+docker exec ranger-hive grep -A1 'xasecure.audit.destination.solr' /opt/hive/conf/ranger-hive-audit.xml | grep -q 'true' || fail "Solr audit not enabled in ranger-hive-audit.xml"
+docker exec ranger-hive test -d /var/log/hive/audit/solr/spool || fail "Solr audit spool dir missing"
+pass "Hive stack up (Solr audit enabled, spool dir present)"
+
+echo "=== 2. Solr ranger_audits core reachable ==="
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -sf --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json' >/dev/null
+" || fail "Cannot query ranger_audits"
+pass "Solr audit core reachable"
+
+echo "=== 3. Baseline audit count (repo=${REPO}) ==="
+before=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "Before: ${before}"
+
+echo "=== 4. Hive access (testuser1) to generate audit ==="
+set +e
+docker exec ranger-hive bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_u
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/testuser1.keytab testuser1/${HIVE_HOST}@EXAMPLE.COM
+ klist
+ /opt/hive/bin/beeline -u 'jdbc:hive2://localhost:10000/default;principal=hive/${HIVE_HOST}@EXAMPLE.COM' -e 'show databases;' 2>&1
+ /opt/hive/bin/beeline -u 'jdbc:hive2://localhost:10000/default;principal=hive/${HIVE_HOST}@EXAMPLE.COM' -e 'show tables in default;' 2>&1
+"
+set -e
+
+echo "Waiting 30s for Solr audit flush..."
+sleep 30
+
+after=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "After: ${after}"
+
+[ "${after}" -gt "${before}" ] || fail "Hive audit count did not increase (${before} -> ${after})"
+pass "Hive audit write to Solr (${before} -> ${after})"
+
+echo ""
+echo "=== ALL HIVE->SOLR AUDIT CHECKS PASSED ==="
diff --git a/dev-support/ranger-docker/scripts/kafka/ranger-kafka-plugin-install.properties b/dev-support/ranger-docker/scripts/kafka/ranger-kafka-plugin-install.properties
index 2e0c1350b0..b1a521e1bb 100644
--- a/dev-support/ranger-docker/scripts/kafka/ranger-kafka-plugin-install.properties
+++ b/dev-support/ranger-docker/scripts/kafka/ranger-kafka-plugin-install.properties
@@ -23,11 +23,11 @@ CUSTOM_GROUP=hadoop
XAAUDIT.SUMMARY.ENABLE=true
UPDATE_XAPOLICIES_ON_GRANT_REVOKE=true
-XAAUDIT.AUDITSERVER.ENABLE=true
+XAAUDIT.AUDITSERVER.ENABLE=false
XAAUDIT.AUDITSERVER.URL=http://ranger-audit-ingestor.rangernw:7081
XAAUDIT.AUDITSERVER.FILE_SPOOL_DIR=/var/log/kafka/audit/audit-ingestor/spool
-XAAUDIT.SOLR.IS_ENABLED=false
+XAAUDIT.SOLR.IS_ENABLED=true
XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
XAAUDIT.SOLR.SOLR_URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
@@ -46,8 +46,8 @@ XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60
XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600
XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10
-XAAUDIT.SOLR.ENABLE=false
-XAAUDIT.SOLR.URL=http://ranger-solr:8983/solr/ranger_audits
+XAAUDIT.SOLR.ENABLE=true
+XAAUDIT.SOLR.URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=NONE
diff --git a/dev-support/ranger-docker/scripts/kafka/ranger-kafka-setup.sh b/dev-support/ranger-docker/scripts/kafka/ranger-kafka-setup.sh
index 067042ada8..3f6b93d2b7 100755
--- a/dev-support/ranger-docker/scripts/kafka/ranger-kafka-setup.sh
+++ b/dev-support/ranger-docker/scripts/kafka/ranger-kafka-setup.sh
@@ -34,6 +34,13 @@ cp ${RANGER_SCRIPTS}/kafka-server-jaas.conf ${KAFKA_HOME}/config/
chown -R kafka:hadoop /opt/kafka/
+mkdir -p /var/log/kafka/audit/solr/spool \
+ /var/log/kafka/audit/hdfs/spool \
+ /var/log/kafka/audit/audit-ingestor/spool \
+ /var/log/kafka/audit/archive
+chown -R kafka:hadoop /var/log/kafka/audit
+chmod -R 775 /var/log/kafka/audit
+
cd ${RANGER_HOME}/ranger-kafka-plugin
./enable-kafka-plugin.sh
diff --git a/dev-support/ranger-docker/scripts/kafka/test-kafka-audit-to-solr.sh b/dev-support/ranger-docker/scripts/kafka/test-kafka-audit-to-solr.sh
new file mode 100755
index 0000000000..98202aa850
--- /dev/null
+++ b/dev-support/ranger-docker/scripts/kafka/test-kafka-audit-to-solr.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/env bash
+# Verify Kafka plugin writes authorization audits to Solr ranger_audits core
+set -euo pipefail
+
+SOLR_HOST="${SOLR_HOST:-ranger-solr.rangernw}"
+SOLR_BASE="http://${SOLR_HOST}:8983"
+REPO="${REPO:-dev_kafka}"
+KAFKA_HOST="${KAFKA_HOST:-ranger-kafka.rangernw}"
+
+pass() { echo "PASS: $*"; }
+fail() { echo "FAIL: $*"; exit 1; }
+
+echo "=== 1. Kafka + plugin healthy ==="
+docker exec ranger-kafka bash -c 'ps aux | grep kafka.Kafka | grep -v grep' | grep -q Kafka || fail "Kafka broker not running"
+docker exec ranger-kafka grep -A1 'xasecure.audit.destination.solr' /opt/kafka/config/ranger-kafka-audit.xml | grep -q 'true' || fail "Solr audit not enabled"
+docker exec ranger-kafka test -d /var/log/kafka/audit/solr/spool || fail "Solr audit spool dir missing"
+pass "Kafka stack up (Solr audit enabled)"
+
+echo "=== 2. Solr ranger_audits core reachable ==="
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -sf --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json' >/dev/null
+" || fail "Cannot query ranger_audits"
+pass "Solr audit core reachable"
+
+echo "=== 3. Baseline audit count (repo=${REPO}) ==="
+before=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "Before: ${before}"
+
+echo "=== 4. Kafka access (testuser1) to generate audit ==="
+# Authorization may deny the operation; denied attempts still produce Ranger audits.
+docker exec ranger-kafka bash -c "
+ set +e
+ cat > /tmp/kafka-client-jaas.conf <<'EOF'
+KafkaClient {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab=\"/etc/keytabs/testuser1.keytab\"
+ principal=\"testuser1/${KAFKA_HOST}@EXAMPLE.COM\";
+};
+EOF
+ cat > /tmp/client.properties <<'EOF'
+security.protocol=SASL_PLAINTEXT
+sasl.mechanism=GSSAPI
+sasl.kerberos.service.name=kafka
+EOF
+ export KRB5CCNAME=FILE:/tmp/cc_u
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/testuser1.keytab testuser1/${KAFKA_HOST}@EXAMPLE.COM
+ export KAFKA_OPTS=\"-Djava.security.auth.login.config=/tmp/kafka-client-jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf\"
+ topic=\"ranger-audit-test-\$(date +%s)\"
+ /opt/kafka/bin/kafka-topics.sh --bootstrap-server ${KAFKA_HOST}:9092 --create --topic \"\${topic}\" --partitions 1 --replication-factor 1 --command-config /tmp/client.properties 2>&1 || true
+ /opt/kafka/bin/kafka-configs.sh --bootstrap-server ${KAFKA_HOST}:9092 --entity-type topics --entity-name \"\${topic}\" --describe --command-config /tmp/client.properties 2>&1 || true
+ true
+"
+
+echo "Waiting 25s for Solr audit flush..."
+sleep 25
+
+after=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+echo "After: ${after}"
+
+[ "${after}" -gt "${before}" ] || fail "Kafka audit count did not increase (${before} -> ${after})"
+pass "Kafka audit write to Solr (${before} -> ${after})"
+
+echo ""
+echo "=== ALL KAFKA->SOLR AUDIT CHECKS PASSED ==="
diff --git a/dev-support/ranger-docker/scripts/solr/test-audit-e2e.sh b/dev-support/ranger-docker/scripts/solr/test-audit-e2e.sh
new file mode 100755
index 0000000000..3e702df3e0
--- /dev/null
+++ b/dev-support/ranger-docker/scripts/solr/test-audit-e2e.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+# End-to-end audit verification for Ranger Docker (Solr plugin + Admin UI)
+set -euo pipefail
+
+SOLR_HOST="${SOLR_HOST:-ranger-solr.rangernw}"
+SOLR_BASE="http://${SOLR_HOST}:8983"
+REPO="${REPO:-dev_solr}"
+ADMIN_URL="${ADMIN_URL:-http://localhost:6080}"
+ADMIN_USER="${ADMIN_USER:-admin}"
+ADMIN_PASS="${ADMIN_PASS:-rangerR0cks!}"
+
+pass() { echo "PASS: $*"; }
+fail() { echo "FAIL: $*"; exit 1; }
+
+echo "=== 1. Solr plugin: policy download ==="
+SOLR_LOG=$(docker logs ranger-solr 2>&1 || true)
+echo "${SOLR_LOG}" | grep -Fq "PolicyRefresher(serviceName=dev_solr): found updated version" || fail "PolicyRefresher did not download policies"
+echo "${SOLR_LOG}" | grep -Fq "policy evaluators" || fail "No policy evaluators in log"
+pass "Policy download"
+
+echo "=== 2. Solr: ranger_audits core loaded ==="
+echo "${SOLR_LOG}" | grep -Fq "Creating SolrCore 'ranger_audits'" || fail "ranger_audits core not created"
+pass "Audit core loaded"
+
+echo "=== 3. Plugin audit WRITE (testuser1 -> /admin/cores) ==="
+before=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_u
+ kdestroy -q 2>/dev/null || true
+ kinit -kt /etc/keytabs/testuser1.keytab testuser1/${SOLR_HOST}@EXAMPLE.COM
+ curl -s -o /dev/null --negotiate -u : '${SOLR_BASE}/solr/admin/cores'
+"
+sleep 18
+after=$(docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -s --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=repo:${REPO}&rows=0&wt=json'
+" | grep -o '"numFound":[0-9]*' | head -1 | grep -o '[0-9]*')
+
+[ "${after}" -gt "${before}" ] || fail "Audit count did not increase (${before} -> ${after})"
+pass "Plugin audit write (${before} -> ${after})"
+
+echo "=== 4. Solr audit READ (HTTP SPNEGO) ==="
+docker exec ranger-solr bash -c "
+ export KRB5CCNAME=FILE:/tmp/cc_h
+ kinit -kt /etc/keytabs/HTTP.keytab HTTP/${SOLR_HOST}@EXAMPLE.COM
+ curl -sf --negotiate -u : '${SOLR_BASE}/solr/ranger_audits/select?q=*:*&rows=1&wt=json' >/dev/null
+" || fail "HTTP read of ranger_audits failed"
+pass "Direct Solr read"
+
+echo "=== 5. Ranger Admin UI audit READ (SolrMgr / xaudit API) ==="
+docker exec ranger bash -c "grep -A1 'ranger.audit.solr.urls' /opt/ranger/admin/ews/webapp/WEB-INF/classes/conf/ranger-admin-site.xml" | grep -q ranger-solr.rangernw || fail "Admin audit URL not FQDN"
+resp=$(curl -sf -u "${ADMIN_USER}:${ADMIN_PASS}" "${ADMIN_URL}/service/xaudit/access_audit?pageSize=2&startIndex=0") || fail "xaudit API request failed"
+echo "${resp}" | grep -q '"totalCount"' || fail "No totalCount in response"
+echo "${resp}" | grep -q 'msgDesc' && echo "${resp}" | grep -q '"statusCode":1' && fail "API returned error: ${resp}"
+pass "Ranger Admin audit API (UI uses same path)"
+
+echo ""
+echo "=== ALL CHECKS PASSED ==="
diff --git a/distro/src/main/assembly/hbase-agent.xml b/distro/src/main/assembly/hbase-agent.xml
index f3785ee1f9..0ee45b7488 100644
--- a/distro/src/main/assembly/hbase-agent.xml
+++ b/distro/src/main/assembly/hbase-agent.xml
@@ -81,6 +81,10 @@
org.graalvm.sdk:graal-sdk:jar:${graalvm.version}
org.graalvm.truffle:truffle-api:jar:${graalvm.version}
com.ibm.icu:icu4j
+ org.apache.ranger:ranger-audit-core
+ org.apache.ranger:ranger-audit-dest-auditserver
+ org.apache.ranger:ranger-audit-dest-hdfs
+ org.apache.ranger:ranger-audit-dest-solr
diff --git a/distro/src/main/assembly/hdfs-agent.xml b/distro/src/main/assembly/hdfs-agent.xml
index 171181c80b..0d1e52edf7 100644
--- a/distro/src/main/assembly/hdfs-agent.xml
+++ b/distro/src/main/assembly/hdfs-agent.xml
@@ -86,6 +86,10 @@
755
644
+ org.apache.ranger:ranger-audit-core
+ org.apache.ranger:ranger-audit-dest-auditserver
+ org.apache.ranger:ranger-audit-dest-hdfs
+ org.apache.ranger:ranger-audit-dest-solr
com.carrotsearch:hppc
commons-collections:commons-collections
io.airlift:aircompressor:jar:${aircompressor.version}
diff --git a/distro/src/main/assembly/hive-agent.xml b/distro/src/main/assembly/hive-agent.xml
index 90a5b16142..8a923fb969 100644
--- a/distro/src/main/assembly/hive-agent.xml
+++ b/distro/src/main/assembly/hive-agent.xml
@@ -88,6 +88,10 @@
org.graalvm.sdk:graal-sdk:jar:${graalvm.version}
org.graalvm.truffle:truffle-api:jar:${graalvm.version}
com.ibm.icu:icu4j
+ org.apache.ranger:ranger-audit-core
+ org.apache.ranger:ranger-audit-dest-auditserver
+ org.apache.ranger:ranger-audit-dest-hdfs
+ org.apache.ranger:ranger-audit-dest-solr
diff --git a/distro/src/main/assembly/plugin-kafka.xml b/distro/src/main/assembly/plugin-kafka.xml
index 6ae15a6369..5e199928f3 100644
--- a/distro/src/main/assembly/plugin-kafka.xml
+++ b/distro/src/main/assembly/plugin-kafka.xml
@@ -53,6 +53,10 @@
755
644
+ org.apache.ranger:ranger-audit-core
+ org.apache.ranger:ranger-audit-dest-auditserver
+ org.apache.ranger:ranger-audit-dest-hdfs
+ org.apache.ranger:ranger-audit-dest-solr
com.carrotsearch:hppc
com.fasterxml.jackson.core:jackson-annotations:jar:${fasterxml.jackson.version}
com.fasterxml.jackson.core:jackson-core:jar:${fasterxml.jackson.version}
diff --git a/distro/src/main/assembly/plugin-solr.xml b/distro/src/main/assembly/plugin-solr.xml
index a478e27a46..5558d6cc25 100644
--- a/distro/src/main/assembly/plugin-solr.xml
+++ b/distro/src/main/assembly/plugin-solr.xml
@@ -52,6 +52,10 @@
755
644
+ org.apache.ranger:ranger-audit-core
+ org.apache.ranger:ranger-audit-dest-auditserver
+ org.apache.ranger:ranger-audit-dest-hdfs
+ org.apache.ranger:ranger-audit-dest-solr
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:${fasterxml.jackson.version}
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:${fasterxml.jackson.version}
com.google.code.gson:gson
@@ -64,6 +68,15 @@
org.apache.hadoop:hadoop-client-runtime:jar:${hadoop.version}
org.apache.httpcomponents:httpasyncclient:jar:${httpcomponents.httpasyncclient.version}
org.apache.httpcomponents:httpcore-nio:jar:${httpcomponents.httpcore.version}
+ org.apache.solr:solr-solrj:jar:${solr.version}
+ org.eclipse.jetty:jetty-client:jar:${jetty-client.version}
+ org.glassfish.jersey.core:jersey-client:jar:${jersey-client.version}
+ org.glassfish.jersey.core:jersey-common:jar:${jersey-client.version}
+ org.glassfish.jersey.ext:jersey-entity-filtering:jar:${jersey-client.version}
+ org.glassfish.jersey.media:jersey-media-json-jackson:jar:${jersey-client.version}
+ org.glassfish.jersey.inject:jersey-hk2:jar:${jersey-client.version}
+ javax.ws.rs:javax.ws.rs-api
+ org.glassfish.hk2:hk2-locator
org.glassfish.hk2:class-model
org.glassfish.hk2:hk2-api
org.glassfish.hk2:hk2-core
diff --git a/hbase-agent/pom.xml b/hbase-agent/pom.xml
index 2b9412483b..5abfdc5059 100644
--- a/hbase-agent/pom.xml
+++ b/hbase-agent/pom.xml
@@ -43,6 +43,10 @@
ch.qos.logback
*
+
+ org.eclipse.jetty
+ *
+
@@ -72,6 +76,10 @@
jakarta.activation
jakarta.activation-api
+
+ org.eclipse.jetty
+ *
+
@@ -131,6 +139,10 @@
com.fasterxml.jackson.module
*
+
+ org.eclipse.jetty
+ *
+
@@ -151,6 +163,10 @@
com.fasterxml.jackson.module
*
+
+ org.eclipse.jetty
+ *
+
@@ -166,6 +182,10 @@
org.apache.hadoop
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -201,6 +221,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.glassfish
javax.el
@@ -553,12 +577,7 @@
${hbase.jetty.version}
test
-
- org.eclipse.jetty
- jetty-server
- ${hbase.jetty.version}
- test
-
+
org.eclipse.jetty
jetty-util
diff --git a/hdfs-agent/pom.xml b/hdfs-agent/pom.xml
index c9392c272e..3c858ffcc7 100644
--- a/hdfs-agent/pom.xml
+++ b/hdfs-agent/pom.xml
@@ -127,6 +127,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -172,6 +176,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -197,6 +205,10 @@
javax.ws.rs
jsr311-api
+
+ org.eclipse.jetty
+ *
+
diff --git a/hive-agent/pom.xml b/hive-agent/pom.xml
index 95a7b4dca2..5d36d0c16d 100644
--- a/hive-agent/pom.xml
+++ b/hive-agent/pom.xml
@@ -119,6 +119,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -162,6 +166,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -193,6 +201,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.glassfish
javax.el
@@ -232,6 +244,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
@@ -267,6 +283,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.glassfish
javax.el
@@ -292,6 +312,10 @@
javax.ws.rs
jsr311-api
+
+ org.eclipse.jetty
+ *
+
diff --git a/kms/pom.xml b/kms/pom.xml
index f49d33984c..100e91eb81 100644
--- a/kms/pom.xml
+++ b/kms/pom.xml
@@ -50,6 +50,10 @@
com.fasterxml.jackson.dataformat
jackson-dataformat-cbor
+
+ org.eclipse.jetty
+ *
+
software.amazon.ion
ion-java
@@ -96,6 +100,10 @@
jakarta.activation
jakarta.activation-api
+
+ org.eclipse.jetty
+ *
+
@@ -143,6 +151,10 @@
log4jdbc
${googlecode.log4jdbc.version}
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -166,6 +178,10 @@
org.apache.commons
commons-lang3
+
+ org.eclipse.jetty
+ *
+
@@ -181,6 +197,10 @@
org.apache.commons
commons-lang3
+
+ org.eclipse.jetty
+ *
+
@@ -197,6 +217,10 @@
org.apache.commons
commons-lang3
+
+ org.eclipse.jetty
+ *
+
@@ -213,6 +237,10 @@
org.apache.commons
commons-lang3
+
+ org.eclipse.jetty
+ *
+
@@ -324,6 +352,10 @@
junit
junit
+
+ org.eclipse.jetty
+ *
+
@@ -393,6 +425,10 @@
net.minidev
json-smart
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -457,6 +493,10 @@
org.apache.commons
commons-text
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -497,6 +537,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
@@ -536,6 +580,10 @@
net.minidev
json-smart
+
+ org.eclipse.jetty
+ *
+
@@ -569,6 +617,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/knox-agent/pom.xml b/knox-agent/pom.xml
index faade88ad2..1753c75b4e 100644
--- a/knox-agent/pom.xml
+++ b/knox-agent/pom.xml
@@ -110,6 +110,10 @@
org.apache.zookeeper
zookeeper
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -130,6 +134,10 @@
javax.ws.rs
jsr311-api
+
+ org.eclipse.jetty
+ *
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+ ${tomcat.embed.version}
+
org.junit.jupiter
@@ -73,6 +79,13 @@
org.mockito
mockito-core
+ ${mockito.version}
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ ${mockito.version}
test
diff --git a/ranger-ozone-plugin-shim/pom.xml b/ranger-ozone-plugin-shim/pom.xml
index 66587bc181..5000d2ad33 100644
--- a/ranger-ozone-plugin-shim/pom.xml
+++ b/ranger-ozone-plugin-shim/pom.xml
@@ -40,6 +40,10 @@
io.netty
netty-all
+
+ org.eclipse.jetty
+ *
+
org.yaml
snakeyaml
diff --git a/ranger-solr-plugin-shim/pom.xml b/ranger-solr-plugin-shim/pom.xml
index 14c11efec8..fa2fcb7001 100644
--- a/ranger-solr-plugin-shim/pom.xml
+++ b/ranger-solr-plugin-shim/pom.xml
@@ -98,6 +98,14 @@
org.apache.zookeeper
zookeeper-jute
+
+ org.eclipse.jetty
+ *
+
+
+ org.eclipse.jetty.http2
+ *
+
org.slf4j
*
diff --git a/ranger-storm-plugin-shim/pom.xml b/ranger-storm-plugin-shim/pom.xml
index 16e70f331a..4ac8512c19 100644
--- a/ranger-storm-plugin-shim/pom.xml
+++ b/ranger-storm-plugin-shim/pom.xml
@@ -50,6 +50,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/ranger-yarn-plugin-shim/pom.xml b/ranger-yarn-plugin-shim/pom.xml
index f61e9105da..ae5909714a 100644
--- a/ranger-yarn-plugin-shim/pom.xml
+++ b/ranger-yarn-plugin-shim/pom.xml
@@ -49,6 +49,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/security-admin/pom.xml b/security-admin/pom.xml
index 491baf80fc..f92bf8f9f4 100644
--- a/security-admin/pom.xml
+++ b/security-admin/pom.xml
@@ -80,6 +80,10 @@
jakarta.activation
jakarta.activation-api
+
+ org.eclipse.jetty
+ *
+
@@ -97,6 +101,10 @@
log4jdbc
${googlecode.log4jdbc.version}
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -112,6 +120,10 @@
com.google.guava
guava
+
+ org.eclipse.jetty
+ *
+
@@ -130,6 +142,10 @@
HikariCP
${HikariCP.version}
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -313,6 +329,10 @@
org.apache.commons
commons-text
+
+ org.eclipse.jetty
+ *
+
org.mortbay.jetty
*
@@ -398,6 +418,10 @@
org.apache.commons
commons-compress
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -463,6 +487,10 @@
org.apache.logging.log4j
log4j-api
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -482,6 +510,10 @@
org.apache.logging.log4j
log4j-api
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -522,6 +554,10 @@
javax.ws.rs
jsr311-api
+
+ org.eclipse.jetty
+ *
+
@@ -538,6 +574,10 @@
com.sun.xml.bind
*
+
+ org.eclipse.jetty
+ *
+
@@ -586,6 +626,14 @@
org.apache.zookeeper
zookeeper-jute
+
+ org.eclipse.jetty
+ *
+
+
+ org.eclipse.jetty.http2
+ *
+
org.slf4j
*
@@ -601,6 +649,10 @@
org.apache.tomcat.embed
tomcat-embed-core
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -612,6 +664,10 @@
velocity-engine-core
${velocity.version}
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -639,6 +695,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -650,6 +710,18 @@
jettison
${jettison.version}
+
+
+ org.eclipse.jetty
+ jetty-client
+ ${jetty-client.version}
+
+
+ org.eclipse.jetty
+ *
+
+
+
org.eclipse.persistence
eclipselink
@@ -735,6 +807,10 @@
spring-core
${springframework.version}
+
+ org.eclipse.jetty
+ *
+
org.springframework
spring-jcl
@@ -776,6 +852,10 @@
spring-ldap-core
${spring-ldap-core.version}
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/security-admin/src/test/java/org/apache/ranger/security/handler/TestPermission.java b/security-admin/src/test/java/org/apache/ranger/security/handler/TestPermission.java
index c88a72682c..c8d7d3f287 100644
--- a/security-admin/src/test/java/org/apache/ranger/security/handler/TestPermission.java
+++ b/security-admin/src/test/java/org/apache/ranger/security/handler/TestPermission.java
@@ -25,6 +25,8 @@
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
/**
* @generated by Cursor
@@ -49,12 +51,8 @@ public void getPermission_returnsNullForUnknown() {
@Test
public void getPermission_acceptsNonStringInputs() {
- Object in = new Object() {
- @Override
- public String toString() {
- return "READ";
- }
- };
+ Object in = mock(Object.class);
+ when(in.toString()).thenReturn("READ");
assertEquals(Permission.PermissionType.READ, Permission.getPermission(in));
}
diff --git a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
index c721c30f06..8bd9df73b8 100644
--- a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
+++ b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerHeaderPreAuthFilter.java
@@ -33,8 +33,6 @@
import org.springframework.security.core.context.SecurityContextHolder;
import javax.servlet.FilterChain;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -130,22 +128,19 @@ public void testDoFilter_enabled_withUsername_setsAuthenticationFromRangerDbRole
when(request.getHeader("x-awc-username")).thenReturn("joeuser");
- FilterChain chain = new FilterChain() {
- @Override
- public void doFilter(ServletRequest req, ServletResponse res) {
- org.springframework.security.core.Authentication auth = SecurityContextHolder.getContext().getAuthentication();
-
- assertNotNull(auth);
- assertTrue(auth instanceof RangerAuthenticationToken);
- RangerAuthenticationToken rangerAuth = (RangerAuthenticationToken) auth;
- assertEquals(XXAuthSession.AUTH_TYPE_TRUSTED_PROXY, rangerAuth.getAuthType());
- assertEquals("joeuser", auth.getName());
-
- Collection> authorities = auth.getAuthorities();
- assertEquals(2, authorities.size());
- assertTrue(authorities.stream().anyMatch(a -> "ROLE_SYS_ADMIN".equals(a.toString())));
- assertTrue(authorities.stream().anyMatch(a -> "ROLE_USER".equals(a.toString())));
- }
+ FilterChain chain = (req, res) -> {
+ org.springframework.security.core.Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+
+ assertNotNull(auth);
+ assertTrue(auth instanceof RangerAuthenticationToken);
+ RangerAuthenticationToken rangerAuth = (RangerAuthenticationToken) auth;
+ assertEquals(XXAuthSession.AUTH_TYPE_TRUSTED_PROXY, rangerAuth.getAuthType());
+ assertEquals("joeuser", auth.getName());
+
+ Collection> authorities = auth.getAuthorities();
+ assertEquals(2, authorities.size());
+ assertTrue(authorities.stream().anyMatch(a -> "ROLE_SYS_ADMIN".equals(a.toString())));
+ assertTrue(authorities.stream().anyMatch(a -> "ROLE_USER".equals(a.toString())));
};
filter.doFilter(request, response, chain);
diff --git a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerKrbFilter.java b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerKrbFilter.java
index 43a0ab27c2..f147eb5dd0 100644
--- a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerKrbFilter.java
+++ b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerKrbFilter.java
@@ -180,22 +180,8 @@ public void testProtectedDoFilterDelegates() throws Exception {
@Test
public void testIsCustomSignerSecretProvider() throws Exception {
RangerKrbFilter filter = new RangerKrbFilter();
- // Custom provider (anonymous) should be detected as custom
- SignerSecretProvider custom = new SignerSecretProvider() {
- @Override
- public void init(Properties config, ServletContext servletContext, long tokenValidity) {
- }
-
- @Override
- public byte[] getCurrentSecret() {
- return new byte[0];
- }
-
- @Override
- public byte[][] getAllSecrets() {
- return new byte[0][];
- }
- };
+ // Custom provider (mock) should be detected as custom
+ SignerSecretProvider custom = mock(SignerSecretProvider.class);
setField(filter, "secretProvider", custom);
assertTrue((Boolean) invoke(filter, "isCustomSignerSecretProvider"));
}
diff --git a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerMDCFilter.java b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerMDCFilter.java
index 16156c6e6e..0ef68218b9 100644
--- a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerMDCFilter.java
+++ b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerMDCFilter.java
@@ -30,7 +30,6 @@
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -88,12 +87,7 @@ public void testInitAndDoFilter_enabled_setsAndClearsMDC() throws Exception {
ServletResponse response = mock(ServletResponse.class);
- FilterChain chain = new FilterChain() {
- @Override
- public void doFilter(ServletRequest req, ServletResponse res) throws IOException, ServletException {
- assertEquals("abc-123", MDC.get("RID"));
- }
- };
+ FilterChain chain = (req, res) -> assertEquals("abc-123", MDC.get("RID"));
filter.doFilter(request, response, chain);
@@ -110,13 +104,7 @@ public void testDoFilter_disabled_bypasses() throws Exception {
HttpServletRequest request = mock(HttpServletRequest.class);
ServletResponse response = mock(ServletResponse.class);
- FilterChain chain = new FilterChain() {
- @Override
- public void doFilter(ServletRequest req, ServletResponse res) {
- // MDC should not be set
- assertNull(MDC.get(RangerMDCFilter.DEFAULT_MDC_KEY));
- }
- };
+ FilterChain chain = (req, res) -> assertNull(MDC.get(RangerMDCFilter.DEFAULT_MDC_KEY));
filter.doFilter(request, response, chain);
}
diff --git a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerSecurityContextFormationFilter.java b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerSecurityContextFormationFilter.java
index ff9f059bc4..fc59cab53d 100644
--- a/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerSecurityContextFormationFilter.java
+++ b/security-admin/src/test/java/org/apache/ranger/security/web/filter/TestRangerSecurityContextFormationFilter.java
@@ -124,14 +124,11 @@ public void testDoFilter_setsCreatePrincipalsIfAbsentFlag() throws Exception {
when(req.getParameter("createPrincipalsIfAbsent")).thenReturn("true");
- FilterChain chain = new FilterChain() {
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) {
- Boolean flag = RangerContextHolder.getOpContext() != null
- ? RangerContextHolder.getOpContext().getCreatePrincipalsIfAbsent()
- : null;
- assertEquals(Boolean.TRUE, flag);
- }
+ FilterChain chain = (servletRequest, servletResponse) -> {
+ Boolean flag = RangerContextHolder.getOpContext() != null
+ ? RangerContextHolder.getOpContext().getCreatePrincipalsIfAbsent()
+ : null;
+ assertEquals(Boolean.TRUE, flag);
};
filter.doFilter(req, res, chain);
@@ -222,16 +219,13 @@ public void testDoFilter_authenticated_createsSecurityContextAndUserSession() th
Mockito.when(sessionMgr.processSuccessLogin(Mockito.anyInt(), Mockito.anyString(), Mockito.any(HttpServletRequest.class)))
.thenReturn(userSession);
- FilterChain chain = new FilterChain() {
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) {
- RangerSecurityContext ctx = RangerContextHolder.getSecurityContext();
+ FilterChain chain = (servletRequest, servletResponse) -> {
+ RangerSecurityContext ctx = RangerContextHolder.getSecurityContext();
- assertNotNull(ctx);
- assertNotNull(ctx.getRequestContext());
- assertEquals("awc-request-1", ctx.getRequestContext().getServerRequestId());
- assertSame(userSession, ctx.getUserSession());
- }
+ assertNotNull(ctx);
+ assertNotNull(ctx.getRequestContext());
+ assertEquals("awc-request-1", ctx.getRequestContext().getServerRequestId());
+ assertSame(userSession, ctx.getUserSession());
};
filter.doFilter(req, res, chain);
diff --git a/storm-agent/pom.xml b/storm-agent/pom.xml
index 7e526e2075..327549c5b8 100644
--- a/storm-agent/pom.xml
+++ b/storm-agent/pom.xml
@@ -50,6 +50,10 @@
jakarta.activation
jakarta.activation-api
+
+ org.eclipse.jetty
+ *
+
@@ -100,6 +104,10 @@
com.fasterxml.jackson.module
*
+
+ org.eclipse.jetty
+ *
+
@@ -120,6 +128,10 @@
com.fasterxml.jackson.module
*
+
+ org.eclipse.jetty
+ *
+
@@ -132,6 +144,11 @@
credentialbuilder
${project.version}
+
+ org.eclipse.jetty
+ *
+
+
org.slf4j
*
@@ -147,6 +164,10 @@
org.apache.hadoop
hadoop-common
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -162,6 +183,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
diff --git a/tagsync/pom.xml b/tagsync/pom.xml
index 30d5eea5b5..11662bf21d 100644
--- a/tagsync/pom.xml
+++ b/tagsync/pom.xml
@@ -176,6 +176,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -199,6 +203,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -230,6 +238,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -269,6 +281,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -308,6 +324,10 @@
org.apache.logging.log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -323,6 +343,10 @@
org.apache.commons
commons-lang3
+
+ org.eclipse.jetty
+ *
+
@@ -354,6 +378,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
@@ -385,6 +413,10 @@
javax.servlet
javax.servlet-api
+
+ org.eclipse.jetty
+ *
+
org.graalvm.sdk
graal-sdk
@@ -413,6 +445,10 @@
log4j
*
+
+ org.eclipse.jetty
+ *
+
org.slf4j
*
@@ -452,6 +488,11 @@
jersey-spring5
${jersey-client.version}
+
+ org.eclipse.jetty
+ *
+
+
org.springframework
*