如何仅在特定 java servlet 中要求客户端证书身份验证?

How to require client certificate authentication in only specific java servlets?

我正在尝试创建一个 java servlet 应用程序,它需要客户端证书身份验证,但仅限于特定页面。我想要一个不需要任何类型身份验证的登录页面,该页面将具有 link/button 以转到需要身份验证的页面。有办法吗?

我正在使用 OpenLiberty 作为 servlet 容器。我熟悉使用 ClientAuthenticationSupported="true"(在 server.xml 中),但我不希望用户在到达特定页面之前提示他们 select 证书。我还查看了 HttpServletRequest,但没有看到使用可用方法强制执行特定类型身份验证的方法。

我希望用户收到提示,就像他们正在访问 prod.idrix.eu/secure 一样。有没有办法以编程方式设置 servlet 的身份验证类型来完成此操作?任何帮助,将不胜感激。我认为这可以使用两个不同的应用程序(一个不需要身份验证,一个需要身份验证)来完成,但我想将它们保持为一个。

谢谢。

web.xml 中,您可以指定 security-constraints,这将包括应保护的页面的 URL 模式。您还可以配置 <login-config> 以使用 CLIENT-CERT 身份验证方法。 然后在 server.xml 中配置用户注册表以及证书和用户之间的映射。此处有更多详细信息 - https://www.ibm.com/docs/en/was-liberty/base?topic=liberty-ldap-certificate-map-mode