Tomcat 使用 HTTPS REST 设置

Tomcat with HTTPS REST Setup

我正在为 Tomcat 使用 Jersey 编写 REST 服务器。我精通 Java 但这是我第一次为网络写作,所以我希望这个问题不是愚蠢的。我试过到处搜索,但无法得出我理解的答案。

我正在尝试使用 HTTPS 和基本身份验证,但我不知道是否必须在实际 Java 中编写任何内容才能完成此操作。 Tomcat 会处理所有 encryption/decryption 的 SSL 信息,还是我必须在我的服务器代码中做一些事情来处理这个?在客户端我知道我将手动执行此操作,但我找不到有关如何在服务器端执行此操作的任何信息。是 Tomcat 设置吗?我是否必须将 Tomcat 设置为仅将 HTTPS 流量转发到我的服务器,然后它会解密并将解密后的信息发送到我的服务器,在那里它会像普通的未加密命令一样运行?

对于服务器,您首先需要确保Tomcat配置为支持HTTPS/SSL/TLS。这包括设置密钥库和编辑配置文件。您可以在 SSL/TLS Configuration HOW-TO 查看有关如何执行此操作的所有详细信息。请注意 link 用于 Tomcat 8。对于 Tomcat 7,您应该搜索相应的文档。

设置完成后,要真正使用 HTTPS,剩下要做的就是在您的 web.xml 文件中将 <transport> 设置为 CONFIDENTIAL网络应用程序。

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

如果您还没有设置 web.xml 安全性,那么您需要花时间阅读 Securing Web Applications。还有一个关于使用 web.xml 配置设置基本身份验证的部分。

当您获得有关基本身份验证的部分时,您会注意到 <realm-name> 的配置。领域是需要用 Tomcat 设置的东西。这基本上是 Tomcat 将查找身份验证的用户存储的访问点。要了解有关设置领域的更多信息,请参阅 Realm Configuration HOW-TO(同样这是 Tomcat 8 link)。有不同类型的领域可供选择,所以只选择一个领域,比如 JDBC 领域。

就是这样。我认为我提供的 links 不是提供教程,而是商品官方资源,它们在解释方面比我能做的更好。如果这对您来说是全新的,您可能需要一天时间来设置所有内容,但我相信您会从这些文档中学到很多东西。

另一件事,如果你想做授权,一旦你在 tomcat 中用角色设置领域(参见 JDBC 领域部分的例子),你可以使用角色授权配置在 web.xml(参见 "Securing Web Applications" link)或者您可以使用 Jersey 的基于角色的授权,这将提供更精细的控制。为此,请参阅 Authorization - securing resources