You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ra...@apache.org on 2026/07/31 06:40:33 UTC
(ranger) branch ranger-2.9 updated: RANGER-5712: Fix Trino/Ozone plugin auth in ranger-docker (backport)
This is an automated email from the ASF dual-hosted git repository.
ramackri pushed a commit to branch ranger-2.9
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.9 by this push:
new f39599d78 RANGER-5712: Fix Trino/Ozone plugin auth in ranger-docker (backport)
f39599d78 is described below
commit f39599d78ef339c5d8306e7f8b0eaa8f7da3b07c
Author: ramk <ra...@cloudera.com>
AuthorDate: Fri Jul 31 12:10:20 2026 +0530
RANGER-5712: Fix Trino/Ozone plugin auth in ranger-docker (backport)
Backport ac42df29 from master with ranger-2.9 compatibility: Ozone Kerberos
keytabs and secure policy download via OM principal, Trino basic auth for
policy REST client, and Jersey/Jackson exclude packaging for Ozone plugin.
Set policy.download.auth.users to om for dev_ozone (including existing
services), add Solr audit JAAS with FQDN Solr URL for Kerberos docker on
2.9, and javax.annotation-api classpath fix for OM policy download.
---
dev-support/ranger-docker/Dockerfile.ranger-ozone | 5 ++-
.../ranger-docker/docker-compose.ranger-ozone.yml | 26 +++++++++--
.../scripts/admin/create-ranger-services.py | 26 +++++++++--
.../ranger-docker/scripts/kdc/entrypoint.sh | 6 ++-
.../ranger-docker/scripts/ozone/docker-config | 11 +++++
.../ozone/ranger-ozone-plugin-install.properties | 24 +++++-----
.../scripts/ozone/ranger-ozone-setup.sh | 51 ++++++++++++++++++++++
.../scripts/trino/ranger-trino-security.xml | 16 +++++++
distro/src/main/assembly/plugin-ozone.xml | 37 ++++++++--------
9 files changed, 160 insertions(+), 42 deletions(-)
diff --git a/dev-support/ranger-docker/Dockerfile.ranger-ozone b/dev-support/ranger-docker/Dockerfile.ranger-ozone
index 0e435e1f5..17264e7b7 100644
--- a/dev-support/ranger-docker/Dockerfile.ranger-ozone
+++ b/dev-support/ranger-docker/Dockerfile.ranger-ozone
@@ -27,5 +27,6 @@ USER root
RUN useradd -g hadoop -ms /bin/bash ozone
RUN mkdir -p -m 755 /var/log/ozone
-# Required to locate the plugin jars and the config files
-ENV OZONE_MANAGER_CLASSPATH="${OZONE_HOME}/ranger-ozone-plugin/lib/libext/*:${OZONE_HOME}/ranger-ozone-plugin/conf"
+# Required to locate the plugin jars and the config files.
+# javax.annotation-api is also required on the OM classpath for Jersey 2.x (see ranger-ozone-setup.sh).
+ENV OZONE_MANAGER_CLASSPATH="${OZONE_HOME}/ranger-ozone-plugin/lib/libext/*:${OZONE_HOME}/ranger-ozone-plugin/conf:${OZONE_HOME}/share/ozone/lib/javax.annotation-api-*.jar"
diff --git a/dev-support/ranger-docker/docker-compose.ranger-ozone.yml b/dev-support/ranger-docker/docker-compose.ranger-ozone.yml
index 9ed275643..f327e4c58 100644
--- a/dev-support/ranger-docker/docker-compose.ranger-ozone.yml
+++ b/dev-support/ranger-docker/docker-compose.ranger-ozone.yml
@@ -5,13 +5,20 @@ services:
hostname: datanode.rangernw
volumes:
- ./downloads/ozone-${OZONE_VERSION}:/opt/hadoop
+ - ./dist/keytabs/datanode:/etc/keytabs
+ - ./scripts/kdc/krb5.conf:/etc/krb5.conf:ro
networks:
- ranger
ports:
- 9864
- command: bash -c "sudo mkdir -p /data/hdds /data/metadata && sudo chown -R hadoop:hadoop /data && exec /opt/hadoop/bin/ozone datanode"
+ depends_on:
+ ranger-kdc:
+ condition: service_started
+ command: bash -c "unset KERBEROS_ENABLED; sudo mkdir -p /data/hdds /data/metadata && sudo chown -R hadoop:hadoop /data && exec /opt/hadoop/bin/ozone datanode"
env_file:
- ./scripts/ozone/docker-config
+ environment:
+ RANGER_KERBEROS_ENABLED: ${KERBEROS_ENABLED}
om:
build:
context: .
@@ -27,12 +34,16 @@ services:
volumes:
- ./downloads/ozone-${OZONE_VERSION}:/opt/hadoop
- ./dist/ranger-${OZONE_PLUGIN_VERSION}-ozone-plugin:/opt/hadoop/ranger-ozone-plugin
+ - ./dist/keytabs/om:/etc/keytabs
+ - ./scripts/kdc/krb5.conf:/etc/krb5.conf:ro
networks:
- ranger
ports:
- 9874:9874
- 9862:9862
depends_on:
+ ranger-kdc:
+ condition: service_started
scm:
condition: service_started
datanode:
@@ -46,26 +57,33 @@ services:
OZONE_HOME: /opt/hadoop
OZONE_PLUGIN_VERSION: ${OZONE_PLUGIN_VERSION}
OZONE_VERSION: ${OZONE_VERSION}
+ RANGER_KERBEROS_ENABLED: ${KERBEROS_ENABLED}
env_file:
- ./scripts/ozone/docker-config
- # Ozone 2.1 entrypoint init uses obsolete -createObjectStore fallback; use --init explicitly.
- command: bash -c "/opt/hadoop/ranger-ozone-plugin/ranger-ozone-setup.sh && (test -f /data/metadata/om/current/VERSION || /opt/hadoop/bin/ozone om --init) && exec /opt/hadoop/bin/ozone om"
+ # Do not pass KERBEROS_ENABLED: Ozone libexec/entrypoint.sh waits for krb5:8081.
+ command: bash -c "unset KERBEROS_ENABLED; source /opt/hadoop/ranger-ozone-plugin/ranger-ozone-setup.sh && (test -f /data/metadata/om/current/VERSION || /opt/hadoop/bin/ozone om --init) && exec /opt/hadoop/bin/ozone om"
scm:
image: ${OZONE_RUNNER_IMAGE}:${OZONE_RUNNER_VERSION}
container_name: ozone-scm
hostname: scm.rangernw
volumes:
- ./downloads/ozone-${OZONE_VERSION}:/opt/hadoop
+ - ./dist/keytabs/scm:/etc/keytabs
+ - ./scripts/kdc/krb5.conf:/etc/krb5.conf:ro
networks:
- ranger
ports:
- 9876:9876
- 9860:9860
+ depends_on:
+ ranger-kdc:
+ condition: service_started
env_file:
- ./scripts/ozone/docker-config
environment:
+ RANGER_KERBEROS_ENABLED: ${KERBEROS_ENABLED}
OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "${OZONE_SAFEMODE_MIN_DATANODES:-1}"
- command: bash -c "(test -f /data/metadata/scm/current/VERSION || /opt/hadoop/bin/ozone scm --init) && exec /opt/hadoop/bin/ozone scm"
+ command: bash -c "unset KERBEROS_ENABLED; (test -f /data/metadata/scm/current/VERSION || /opt/hadoop/bin/ozone scm --init) && exec /opt/hadoop/bin/ozone scm"
networks:
ranger:
diff --git a/dev-support/ranger-docker/scripts/admin/create-ranger-services.py b/dev-support/ranger-docker/scripts/admin/create-ranger-services.py
index 98f93beea..1da6f1a53 100644
--- a/dev-support/ranger-docker/scripts/admin/create-ranger-services.py
+++ b/dev-support/ranger-docker/scripts/admin/create-ranger-services.py
@@ -106,9 +106,9 @@ def service_not_exists(service):
'configs': {'username': 'hdfs', 'password': 'hdfs',
'ozone.om.http-address': 'http://om:9874',
'hadoop.security.authentication': 'simple',
- 'policy.download.auth.users': 'ozone',
- 'tag.download.auth.users': 'ozone',
- 'userstore.download.auth.users': 'ozone',
+ 'policy.download.auth.users': 'om',
+ 'tag.download.auth.users': 'om',
+ 'userstore.download.auth.users': 'om',
'ranger.plugin.ozone.policy.refresh.synchronous':'true'}})
solr = RangerService({'name': 'dev_solr', 'type': 'solr',
@@ -120,6 +120,24 @@ def service_not_exists(service):
'ranger.plugin.super.users': 'solr',
'ranger.plugin.solr.policy.refresh.synchronous':'true'}})
+def ensure_ozone_kerberos_download_auth():
+ """Existing docker volumes may have dev_ozone with policy.download.auth.users=ozone."""
+ try:
+ existing = ranger_client.get_service('dev_ozone')
+ except JSONDecodeError:
+ return
+ if existing is None:
+ return
+ configs = existing.get('configs') or {}
+ if configs.get('policy.download.auth.users') == 'om':
+ return
+ configs['policy.download.auth.users'] = 'om'
+ configs['tag.download.auth.users'] = 'om'
+ configs['userstore.download.auth.users'] = 'om'
+ existing['configs'] = configs
+ ranger_client.update_service_by_id(existing['id'], existing)
+ print(' dev_ozone service updated for OM Kerberos policy download (policy.download.auth.users=om)')
+
services = [hdfs, yarn, hive, hbase, kafka, knox, kms, trino, ozone, solr]
for service in services:
try:
@@ -128,3 +146,5 @@ def service_not_exists(service):
print(f" {service.name} service created!")
except Exception as e:
print(f"An exception occured: {e}")
+
+ensure_ozone_kerberos_download_auth()
diff --git a/dev-support/ranger-docker/scripts/kdc/entrypoint.sh b/dev-support/ranger-docker/scripts/kdc/entrypoint.sh
index 54b0a1e31..1e64c4d93 100644
--- a/dev-support/ranger-docker/scripts/kdc/entrypoint.sh
+++ b/dev-support/ranger-docker/scripts/kdc/entrypoint.sh
@@ -104,6 +104,10 @@ function create_keytabs() {
create_principal_and_keytab solr ranger-solr
create_principal_and_keytab HTTP ranger-solr
+ create_principal_and_keytab om om
+ create_principal_and_keytab scm scm
+ create_principal_and_keytab dn datanode
+
create_principal_and_keytab zookeeper ranger-zk
}
@@ -131,7 +135,7 @@ if [ ! -f $DB_DIR/principal ]; then
echo "Database initialized"
create_keytabs
- create_testusers ranger ranger-usersync ranger-tagsync ranger-pdp ranger-audit ranger-hadoop ranger-hive ranger-hbase ranger-kafka ranger-solr ranger-knox ranger-kms ranger-ozone ranger-trino
+ create_testusers ranger ranger-usersync ranger-tagsync ranger-pdp ranger-audit ranger-hadoop ranger-hive ranger-hbase ranger-kafka ranger-solr ranger-knox ranger-kms ranger-ozone ranger-trino om scm datanode
else
echo "KDC DB already exists; skipping create"
fi
diff --git a/dev-support/ranger-docker/scripts/ozone/docker-config b/dev-support/ranger-docker/scripts/ozone/docker-config
index e1716c02d..95dd94909 100644
--- a/dev-support/ranger-docker/scripts/ozone/docker-config
+++ b/dev-support/ranger-docker/scripts/ozone/docker-config
@@ -16,6 +16,8 @@
CORE-SITE.XML_fs.defaultFS=ofs://om
CORE-SITE.XML_fs.trash.interval=1
+CORE-SITE.XML_hadoop.security.authentication=kerberos
+CORE-SITE.XML_hadoop.security.auth_to_local=DEFAULT
# For HttpFS service it is required to enable proxying users.
CORE-SITE.XML_hadoop.proxyuser.hadoop.hosts=*
CORE-SITE.XML_hadoop.proxyuser.hadoop.groups=*
@@ -67,6 +69,15 @@ no_proxy=om,scm,s3g,recon,kdc,localhost,127.0.0.1
# Explicitly enable filesystem snapshot feature for this Docker compose cluster
OZONE-SITE.XML_ozone.filesystem.snapshot.enabled=true
+# Kerberos via Ranger KDC keytabs (do not set KERBEROS_ENABLED env; Ozone entrypoint expects krb5:8081)
+OZONE-SITE.XML_ozone.security.enabled=true
+OZONE-SITE.XML_hdds.scm.kerberos.principal=scm/scm.rangernw@EXAMPLE.COM
+OZONE-SITE.XML_hdds.scm.kerberos.keytab.file=/etc/keytabs/scm.keytab
+OZONE-SITE.XML_ozone.om.kerberos.principal=om/om.rangernw@EXAMPLE.COM
+OZONE-SITE.XML_ozone.om.kerberos.keytab.file=/etc/keytabs/om.keytab
+OZONE-SITE.XML_hdds.datanode.kerberos.principal=dn/datanode.rangernw@EXAMPLE.COM
+OZONE-SITE.XML_hdds.datanode.kerberos.keytab.file=/etc/keytabs/dn.keytab
+
# To enable Ranger as the Authorizer in Ozone
OZONE-SITE.XML_ozone.acl.enabled=true
OZONE-SITE.XML_ozone.acl.authorizer.class=org.apache.ranger.authorization.ozone.authorizer.RangerOzoneAuthorizer
diff --git a/dev-support/ranger-docker/scripts/ozone/ranger-ozone-plugin-install.properties b/dev-support/ranger-docker/scripts/ozone/ranger-ozone-plugin-install.properties
index 99c31d2a3..e38cebe53 100644
--- a/dev-support/ranger-docker/scripts/ozone/ranger-ozone-plugin-install.properties
+++ b/dev-support/ranger-docker/scripts/ozone/ranger-ozone-plugin-install.properties
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-POLICY_MGR_URL=http://ranger:6080
+POLICY_MGR_URL=http://ranger.rangernw:6080
REPOSITORY_NAME=dev_ozone
COMPONENT_INSTALL_DIR_NAME=ranger-ozone-plugin
@@ -23,7 +23,7 @@ CUSTOM_GROUP=hadoop
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:8983/solr/ranger_audits
+XAAUDIT.SOLR.SOLR_URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.HDFS.IS_ENABLED=false
XAAUDIT.HDFS.DESTINATION_DIRECTORY=/ranger/audit
@@ -41,21 +41,21 @@ XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10
XAAUDIT.SUMMARY.ENABLE=true
XAAUDIT.SOLR.ENABLE=true
-XAAUDIT.SOLR.URL=http://ranger-solr:8983/solr/ranger_audits
+XAAUDIT.SOLR.URL=http://ranger-solr.rangernw:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=NONE
XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/ozone/audit/solr/spool
-XAAUDIT.SOLR.USE_INMEMORY_JAAS_CFG=false
+XAAUDIT.SOLR.USE_INMEMORY_JAAS_CFG=true
-XAAUDIT.JAAS.CLIENT.LOGIN_MODULE_NAME=%EMPTY%
-XAAUDIT.JAAS.CLIENT.LOGIN_MODULE_CONTROL_FLAG=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.USE_KEY_TAB=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.STORE_KEY=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.USE_TICKET_CACHE=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.SERVICE_NAME=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.KEY_TAB=%EMPTY%
-XAAUDIT.JAAS.CLIENT.OPTION.PRINCIPAL=%EMPTY%
+XAAUDIT.JAAS.CLIENT.LOGIN_MODULE_NAME=com.sun.security.auth.module.Krb5LoginModule
+XAAUDIT.JAAS.CLIENT.LOGIN_MODULE_CONTROL_FLAG=required
+XAAUDIT.JAAS.CLIENT.OPTION.USE_KEY_TAB=true
+XAAUDIT.JAAS.CLIENT.OPTION.STORE_KEY=true
+XAAUDIT.JAAS.CLIENT.OPTION.USE_TICKET_CACHE=true
+XAAUDIT.JAAS.CLIENT.OPTION.SERVICE_NAME=om
+XAAUDIT.JAAS.CLIENT.OPTION.KEY_TAB=/etc/keytabs/om.keytab
+XAAUDIT.JAAS.CLIENT.OPTION.PRINCIPAL=om/om.rangernw@EXAMPLE.COM
XAAUDIT.ELASTICSEARCH.ENABLE=false
XAAUDIT.ELASTICSEARCH.URL=NONE
diff --git a/dev-support/ranger-docker/scripts/ozone/ranger-ozone-setup.sh b/dev-support/ranger-docker/scripts/ozone/ranger-ozone-setup.sh
index 72bd1f32f..abbcdebc1 100755
--- a/dev-support/ranger-docker/scripts/ozone/ranger-ozone-setup.sh
+++ b/dev-support/ranger-docker/scripts/ozone/ranger-ozone-setup.sh
@@ -18,6 +18,51 @@
cd "${OZONE_HOME}"/ranger-ozone-plugin || exit
+# Ozone 2.1.x ships javax.annotation-api under share/ozone/lib but omits it from the
+# default OM classpath. Jersey 2.x (used for Kerberos policy download) needs
+# javax.annotation.Priority on the same classpath as jersey-client.
+ensure_javax_annotation_on_om_classpath() {
+ local annotation_jar
+ annotation_jar="$(ls "${OZONE_HOME}"/share/ozone/lib/javax.annotation-api-*.jar 2>/dev/null | head -1)"
+ if [ -z "${annotation_jar}" ]; then
+ echo "WARN: javax.annotation-api jar not found under ${OZONE_HOME}/share/ozone/lib" >&2
+ return 0
+ fi
+ if [[ "${OZONE_MANAGER_CLASSPATH}" == *"javax.annotation-api"* ]]; then
+ return 0
+ fi
+ case ":${OZONE_MANAGER_CLASSPATH}:" in
+ *:"${annotation_jar}":*) return 0 ;;
+ esac
+ if [ -n "${OZONE_MANAGER_CLASSPATH}" ]; then
+ export OZONE_MANAGER_CLASSPATH="${OZONE_MANAGER_CLASSPATH}:${annotation_jar}"
+ else
+ export OZONE_MANAGER_CLASSPATH="${annotation_jar}"
+ fi
+ echo "Extended OZONE_MANAGER_CLASSPATH with ${annotation_jar}"
+}
+ensure_javax_annotation_on_om_classpath
+
+wait_for_keytab() {
+ local keytab_name=$1
+ if [ "${RANGER_KERBEROS_ENABLED}" != "true" ]; then
+ return 0
+ fi
+ local keytab_path="/etc/keytabs/${keytab_name}"
+ local max_wait_sec="${OZONE_KEYTAB_WAIT_SEC:-120}"
+ local deadline=$((SECONDS + max_wait_sec))
+ echo "Waiting for keytab ${keytab_path} (up to ${max_wait_sec}s)..."
+ while (( SECONDS < deadline )); do
+ if [ -f "${keytab_path}" ]; then
+ echo "Found keytab ${keytab_path}"
+ return 0
+ fi
+ sleep 2
+ done
+ echo "ERROR: timed out waiting for keytab ${keytab_path}" >&2
+ exit 1
+}
+
# SCM Ratis leader election can lag compose depends_on; avoid OM failing with
# Connection refused / ServerNotLeaderException on first SCM RPC.
wait_for_scm() {
@@ -42,6 +87,12 @@ wait_for_scm
if [[ ! -f "${OZONE_HOME}"/.setupDone ]];
then
+ wait_for_keytab om.keytab
+
+ if [ -f "${OZONE_HOME}/libexec/envtoconf.py" ]; then
+ python3 "${OZONE_HOME}/libexec/envtoconf.py" --destination "${OZONE_CONF_DIR:-/etc/hadoop}"
+ fi
+
if [ ! -d conf ]; then
mkdir -p conf
echo "conf directory created!"
diff --git a/dev-support/ranger-docker/scripts/trino/ranger-trino-security.xml b/dev-support/ranger-docker/scripts/trino/ranger-trino-security.xml
index 25fb49ba4..18af7b99b 100644
--- a/dev-support/ranger-docker/scripts/trino/ranger-trino-security.xml
+++ b/dev-support/ranger-docker/scripts/trino/ranger-trino-security.xml
@@ -72,6 +72,22 @@
</description>
</property>
+ <property>
+ <name>ranger.plugin.trino.policy.rest.client.username</name>
+ <value>admin</value>
+ <description>
+ Ranger Admin login for policy download (dev docker sandbox)
+ </description>
+ </property>
+
+ <property>
+ <name>ranger.plugin.trino.policy.rest.client.password</name>
+ <value>rangerR0cks!</value>
+ <description>
+ Ranger Admin password for policy download (dev docker sandbox)
+ </description>
+ </property>
+
<property>
<name>ranger.plugin.trino.policy.cache.dir</name>
<value>/tmp</value>
diff --git a/distro/src/main/assembly/plugin-ozone.xml b/distro/src/main/assembly/plugin-ozone.xml
index 743575b2c..a5bd0091d 100644
--- a/distro/src/main/assembly/plugin-ozone.xml
+++ b/distro/src/main/assembly/plugin-ozone.xml
@@ -105,11 +105,6 @@
<include>org.apache.solr:solr-solrj:jar:${solr.version}</include>
<include>com.fasterxml.woodstox:woodstox-core:jar:${fasterxml.woodstox.version}</include>
<include>org.codehaus.woodstox:stax2-api:jar:${codehaus.woodstox.stax2api.version}</include>
- <include>com.fasterxml.jackson.core:jackson-annotations:jar:${fasterxml.jackson.version}</include>
- <include>com.fasterxml.jackson.core:jackson-core:jar:${fasterxml.jackson.version}</include>
- <include>com.fasterxml.jackson.core:jackson-databind:jar:${fasterxml.jackson.version}</include>
- <include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:${fasterxml.jackson.version}</include>
- <include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:${fasterxml.jackson.version}</include>
<include>com.sun.xml.bind:jaxb-impl</include>
<include>org.elasticsearch:elasticsearch</include>
<include>org.elasticsearch:elasticsearch-core</include>
@@ -128,23 +123,25 @@
<include>org.apache.orc:orc-core:jar:${orc.version}</include>
<include>org.apache.orc:orc-shims:jar:${orc.version}</include>
<include>io.airlift:aircompressor:jar:${aircompressor.version}</include>
- <include>javax.inject:javax.inject</include>
- <include>javax.ws.rs:javax.ws.rs-api</include>
+ <include>javax.annotation:javax.annotation-api:jar:${javax.annotation-api}</include>
<include>org.apache.hadoop.thirdparty:hadoop-shaded-guava:jar:${hadoop-shaded-guava.version}</include>
- <include>org.glassfish.hk2:hk2-api</include>
- <include>org.glassfish.hk2:hk2-locator</include>
- <include>org.glassfish.hk2:hk2-utils</include>
- <include>org.glassfish.hk2.external:aopalliance-repackaged</include>
- <include>org.glassfish.hk2.external:jakarta.inject</include>
- <include>org.glassfish.hk2.external:javax.inject</include>
- <include>org.glassfish:osgi-resource-locator</include>
- <include>org.glassfish.jersey.core:jersey-client</include>
- <include>org.glassfish.jersey.core:jersey-common</include>
- <include>org.glassfish.jersey.ext:jersey-entity-filtering:jar:${jersey-client.version}</include>
- <include>org.glassfish.jersey.inject:jersey-hk2</include>
- <include>org.glassfish.jersey.media:jersey-media-json-jackson:jar:${jersey-client.version}</include>
- <include>com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:${fasterxml.jackson.version}</include>
</includes>
+ <excludes>
+ <exclude>com.fasterxml.jackson.core:*</exclude>
+ <exclude>com.fasterxml.jackson.jaxrs:*</exclude>
+ <exclude>com.fasterxml.jackson.module:*</exclude>
+ <exclude>com.fasterxml.jackson.dataformat:*</exclude>
+ <exclude>org.glassfish.jersey.core:*</exclude>
+ <exclude>org.glassfish.jersey.ext:*</exclude>
+ <exclude>org.glassfish.jersey.inject:*</exclude>
+ <exclude>org.glassfish.jersey.media:*</exclude>
+ <exclude>org.glassfish.hk2:*</exclude>
+ <exclude>javax.ws.rs:javax.ws.rs-api</exclude>
+ <exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
+ <exclude>org.slf4j:*</exclude>
+ <exclude>org.apache.logging.log4j:*</exclude>
+ <exclude>ch.qos.reload4j:*</exclude>
+ </excludes>
</binaries>
</moduleSet>
</moduleSets>