Вопрос или проблема
В качестве требования нам нужно включить утилиты 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.
Решения
-
Проверка альтернативных образов:
Можно рассмотреть использование другого базового образа, например,debian
илиubuntu
, которые предоставляют более полные сборкиcurl
с поддержкой необходимых функций. Это может быть более надежным решением, чем пытаться модифицировать Alpine. -
Сборка cURL из исходников:
Если вы хотите продолжать использовать Alpine, вам следует рассмотреть возможность сборкиcurl
из исходников, добавив поддержку Kerberos и SPNEGO во время компиляции. Вам потребуется установить такие зависимости, какkrb5
иlibcurl
, а затем выполнить сборку с флагами, включающими необходимые механизмы аутентификации. -
Обратиться в сообщество Alpine:
Если вы предполагаете, что данный вопрос связан с проблемами в пакетеcurl
для Alpine, имеет смысл обратиться в официальные репозитории или форумы Alpine, чтобы узнать о состоянии поддержки SPNEGO в их версияхcurl
. -
Поиск альтернативных инструментов:
Если вам не критично использование именноcurl
, вы можете рассмотреть возможность использования других инструментов, которые поддерживают Kerberos, например,wget
с необходимыми флагами.
Заключение
Ваша проблема, скорее всего, касается специфики сборок пакетов в Alpine. Определенно, стоит проанализировать возможность перехода на другой образ или сборку curl
с необходимыми флагами. Таким образом, вы сможете обеспечить необходимые функции аутентификации через SPNEGO в вашем Java 17 JRE образе. Если у вас будут дополнительные вопросы по данной теме, не стесняйтесь обращаться за помощью в сообщество или к профессиональным консультантам.