0

我有一个带有基于 Web 的配置 UI 的 Web 应用程序。如果用户通过 HTTP 访问,我想提醒用户他们应该真正使用 HTTPS,并给他们一个链接以单击以访问以 HTTPS 为前缀的 URL。

现在,如果我们使用默认端口,这非常简单,但通常情况下,我们不是——例如,HTTP 可能在 8080 上,HTTPS 在 8181 上。我可以有一些启发式方法来确定要使用哪个端口,例如 80->443、8080->8181,但是有没有办法从 web 容器中获取端口和协议列表?理想情况下是 Java EE 标准,但即使是特定于容器的也将是一个开始......

编辑 - 一个澄清 - 这是一个“现成的”应用程序(OpenSSO),所以我真的希望能够(a)让用户选择继续使用不安全的端口,如果他们真的想要(例如,他们在笔记本电脑上部署在没有安全端口的某个容器上)并且 (b) 不让用户编辑 server.xml。

4

3 回答 3

1

您可以仅使用配置将它们自动传输到 https。

在您的 web.xml 中:

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

在 HTTPConnector 中的 server.xml 中:

redirectPort="YOUR_SSL_PORT"
于 2008-12-03T01:41:54.543 回答
0

如果您有负载均衡器,通常可以将其配置为自动执行这种重定向。

于 2008-12-03T12:01:35.633 回答
0

如果我正确阅读了您的问题,您可以查询ServletRequest getProtocol以查看连接是以 HTTP 还是 HTTPS 以及什么版本进入的。作为奖励,您可以获得哪个端口。

做出决定并重定向(或转发)到应用程序指定的端口。

为了进一步澄清回答; 启用 HTTPS 通信支持

于 2008-12-03T12:15:12.877 回答