Ошибка при доступе к консоли управления Wildfly - требуется аутентификация - PullRequest
0 голосов
/ 22 сентября 2018

Я получаю сообщение об ошибке Authentication required после того, как я войду в систему Wildfly 13 Management Console.

Если я введу неверный пароль или пользователя, он снова запросит, но если я введу правильно, он отобразит страницу ссообщение об ошибке (поэтому я предполагаю, что пользователь и пароль верны, но что-то еще после этого выдает ошибку).

enter image description here

Я использую докердля запуска контейнера nginx и контейнера wildfly.

nginx прослушивает внешний порт 9991 и прокси передает запрос контейнеру wildfly, но показывает ошибку, описанную ранее.

Это просто происходит с консолью Wildfly , каждый второй запрос проксируется, даже если запрос проксирован к веб-сокету или Wildfly через порт 8080, успешно выполняется .

.Контейнер Wildfly слушает внешне через порт 9990 и Я могу успешно получить доступ к консоли через этот порт .Если в докере я сопоставлю порт "9992:9990" , я все равно смогу успешно получить доступ к консоли через порт 9992.

Итак, похоже, что это не связано с докером, а сСама консоль Wildfly.Вероятно, какая-то аутентификация, которая не проходит успешно при использовании обратного прокси в середине.

У меня есть демонстрационный проект Docker на https://github.com/lucasbasquerotto/docker-main,, и вы можете загрузить тег 0.0.6, который имеет всенастроить для работы с Wildfly 13 и nginx и смоделировать эту ошибку.

git clone -b 0.0.6 --single-branch --depth 1 https://github.com/lucasbasquerotto/docker-main.git
cd docker-main
docker-compose up -d

Затем, если вы обращаетесь к контейнеру напрямую в http://localhost:9990 с пользователем monitor и паролем Monitor#70365 всеработает .

Но если вы получаете доступ к http://localhost:9991 с теми же учетными данными, через обратный прокси-сервер nginx, вы получаете ошибку .

My nginx.conffile:

upstream docker-wildfly {
  server wildfly:9990;
}

location / {
  proxy_pass         http://docker-wildfly;
  proxy_redirect     off;
  proxy_set_header   Host $host;
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header   X-Forwarded-Host $server_name;
}

Я также пытался с:

proxy_set_header   X-Forwarded-Proto $scheme;

А также с Заголовок авторизации (только 2-я строка и также с обоими):

proxy_set_header   Authorization $http_authorization;
proxy_pass_header  Authorization;

А также определение заголовка хоста с портом (вместо просто $ host):

proxy_set_header   Host $server_addr:$server_port;

Я пробовал вышеуказанные конфигурации изолированно иобъединены вместеВсе безрезультатно.

Любые предложения?

Кто-нибудь успешно получал доступ к консоли Wildfly через обратный прокси-сервер?

Обновление (2018-09-22)

Кажется, что Wildfly использует дайджест-аутентификацию (вместо базовой).

Я вижу заголовок в консоли, как показано ниже:

Authorization: Digest username="monitor", realm="ManagementRealm", nonce="AAAAAQAAAStPzpEGR3LxjJcd+HqIX2eJ+W8JuzRHejXPcGH++43AGWSVYTA=", uri="/console/index.html", algorithm=MD5, response="8d5b2b26adce452555d13598e77c0f63", opaque="00000000000000000000000000000000", qop=auth, nc=00000005, cnonce="fe0e31dd57f83948"

Не знаюя не вижу много документации об использовании nginx для передачи запросов прокси с заголовками дайджеста (но я думаю, что это должно быть прозрачно).

Один вопрос, который я видел здесь в SO, это https://serverfault.com/questions/750213/http-digest-authentication-on-proxied-server,, но ответа нетдалеко.

Я видел, что есть неофициальный модуль nginx https://www.nginx.com/resources/wiki/modules/auth_digest/,, но в репозитории github (https://github.com/atomx/nginx-http-auth-digest) он говорит:

Модуль ngx_http_auth_digest дополняет встроенный модуль базовой аутентификации Nginx, предоставляя поддержку дайджест-аутентификации RFC 2617. Модуль в настоящее время функционирует, но только проверен и проверен его автором. И учитывая, что это код безопасности, один набор глаз являетсяПочти наверняка недостаточно, чтобы гарантировать, что это на 100% правильно.Пока не появятся несколько сообщений об ошибках и не исчезнут некоторые «неизвестные неизвестные» в коде, считайте этот модуль «альфой» и относитесь к нему с должной степенью скептицизма.

Такжемне не кажется правильным закодировать пользователя и передать файл для использования nginx (в этом случае аутентификация должна быть прозрачной для обратного прокси-сервера).

В любом случае, я пробовал это ион корректно запрашивает у меня аутентификацию, даже если конечный пункт назначения не имеет дайджест-аутентификации, как, например, при попытке подключиться к сайту wildfly (не консоли), он запрашивает при попытке подключиться к nginx (перед проксированием запроса), затем онуспешно перенаправляет к месту назначения, за исключением случая с консолью wildfly, он постоянно просит меня пройти аутентификацию.

ИтакЯ думаю, что это не решение.Кажется, проблема в том, что nginx передает консоли Wildfly.

...