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>