Как перечислить прослушиватели HTTP из веб-приложения Java EE - PullRequest
0 голосов
/ 02 декабря 2008

У меня есть веб-приложение с веб-интерфейсом конфигурации. Если пользователь получает доступ через HTTP, я хочу предупредить пользователя о том, что ему действительно следует использовать HTTPS, и дать ему ссылку, по которой можно перейти, чтобы перейти к URL-адресу с префиксом HTTPS.

Теперь, это довольно просто, если мы на портах по умолчанию, но часто это не так - например, HTTP может быть на 8080, а HTTPS на 8181. У меня может быть некоторая эвристика для определения, какой порт использовать, например 80-> 443, 8080-> 8181, но есть ли способ получить список портов и протоколов обратно из веб-контейнера? В идеале стандарт Java EE, но даже для конкретного контейнера было бы начало ...

РЕДАКТИРОВАТЬ - одно уточнение - это для готового приложения ( OpenSSO ), поэтому я действительно хотел бы иметь возможность (а) дать пользователю выбор пойти вперед и используйте небезопасный порт, если они действительно хотят (например, развертывают на своем ноутбуке в каком-то контейнере без защищенного порта) и (b) не заставляют пользователя редактировать server.xml.

Ответы [ 3 ]

1 голос
/ 03 декабря 2008

Вы можете автоматически передавать их в https, используя только конфигурацию.

в вашем web.xml:

<user-data-constraint>
  <transport-guarantee>
    CONFIDENTIAL
  </transport-guarantee>
</user-data-constraint>

и в вашем server.xml в HTTPConnector:

redirectPort="YOUR_SSL_PORT"
0 голосов
/ 03 декабря 2008

Если я правильно прочитал ваш вопрос, вы можете запросить ServletRequest getProtocol , чтобы узнать, приходит ли соединение в виде HTTP или HTTPS и какой версии. В качестве бонуса вы можете получить какой порт.

Принять решение и перенаправить (или переслать) на указанный порт приложения.

Для уточнения ответили; Включение поддержки связи HTTPS

0 голосов
/ 03 декабря 2008

Если у вас есть балансировщик нагрузки, обычно его можно настроить на автоматическое перенаправление такого типа.

...