Функции SPNEGO и GSS-API внутри образа jre eclipse-temurin

Вопрос или проблема

В качестве требования нам нужно включить утилиты curl и kerberos в наш текущий образ jre java 17 для целей отладки, проблема возникает, когда пакеты curl и libcurl не включают флаг –negotiate для SPNEGO и функции gss-api. В данный момент наш dockerfile выглядит следующим образом:

FROM docker.io/eclipse-temurin:17-jre-alpine RUN apk add --no-cache curl bind-tools krb5-libs krb5 krb5-dev bash openldap openldap-back-mdb openldap-clients

Не могли бы вы сообщить, является ли это проблемой, связанной с Alpine, которая требует прямого обращения к ним? Я начал думать, что пакет curl/libcurl, который они имеют, не включает эти функции.

Заранее благодарю вас за ваше время и помощь.

Я пытался найти предыдущие ситуации, похожие на мою, искал советы на различных форумах и собирал образ локально, чтобы выяснить, что инструментов kerberos там нет:

curl 8.10.1 (x86_64-alpine-linux-musl) libcurl/8.10.1 OpenSSL/3.3.2 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 c-ares/1.33.1 libidn2/2.3.7 libpsl/0.21.5 nghttp2/1.62.1 Release-Date: 2024-09-18 Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTPS-proxy IDN IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP UnixSockets zstd

Ответ или решение

SPNEGO и GSS-API в имидже JRE Eclipse Temurin

Ваша ситуация с использованием образа JRE от Eclipse Temurin и необходимостью включения инструментов cURL и Kerberos действительно представляет интересные вызовы. Давайте разберем основные аспекты этой проблемы.

Контекст проблемы

Вы упомянули, что используете образ docker.io/eclipse-temurin:17-jre-alpine, и пытаетесь добавить curl и kerberos для целей отладки. Однако, вы столкнулись с проблемой отсутствия поддержки флага --negotiate в пакете curl, что затрудняет использование SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) и функций GSS-API. Это может быть следствием особенностей сборки пакета curl для Alpine Linux.

Проблема с cURL и Alpine Linux

Alpine Linux, будучи легкой дистрибуцией, часто использует свою Си-библиотеку musl, вместо более распространенной glibc, что может привести к несовместимостям с различными библиотеками и инструментами. Пакеты curl и libcurl могут быть собраны без необходимых флагов для обеспечения поддержки механизмов аутентификации, включая SPNEGO.

Когда вы проверяете доступные функции в установленном вами curl:

curl 8.10.1 (x86_64-alpine-linux-musl) libcurl/8.10.1

Вы не видите поддержки Kerberos, это указывает на то, что данный билд curl был собран без интеграции с библиотеками Kerberos, необходимыми для работы с SPNEGO.

Решения

  1. Проверка альтернативных образов:
    Можно рассмотреть использование другого базового образа, например, debian или ubuntu, которые предоставляют более полные сборки curl с поддержкой необходимых функций. Это может быть более надежным решением, чем пытаться модифицировать Alpine.

  2. Сборка cURL из исходников:
    Если вы хотите продолжать использовать Alpine, вам следует рассмотреть возможность сборки curl из исходников, добавив поддержку Kerberos и SPNEGO во время компиляции. Вам потребуется установить такие зависимости, как krb5 и libcurl, а затем выполнить сборку с флагами, включающими необходимые механизмы аутентификации.

  3. Обратиться в сообщество Alpine:
    Если вы предполагаете, что данный вопрос связан с проблемами в пакете curl для Alpine, имеет смысл обратиться в официальные репозитории или форумы Alpine, чтобы узнать о состоянии поддержки SPNEGO в их версиях curl.

  4. Поиск альтернативных инструментов:
    Если вам не критично использование именно curl, вы можете рассмотреть возможность использования других инструментов, которые поддерживают Kerberos, например, wget с необходимыми флагами.

Заключение

Ваша проблема, скорее всего, касается специфики сборок пакетов в Alpine. Определенно, стоит проанализировать возможность перехода на другой образ или сборку curl с необходимыми флагами. Таким образом, вы сможете обеспечить необходимые функции аутентификации через SPNEGO в вашем Java 17 JRE образе. Если у вас будут дополнительные вопросы по данной теме, не стесняйтесь обращаться за помощью в сообщество или к профессиональным консультантам.

Оцените материал
Добавить комментарий

Капча загружается...