仅从特定servlet提示(任何)客户端证书

时间:2014-01-15 10:43:36

标签: java tomcat servlets x509 client-certificates

是否有办法仅在Web应用程序的特定部分强制客户端证书身份验证,即处理客户端证书身份验证的某个servlet?

server.xml 上的clientAuth参数设置为'true'或'want'对我有用,但不方便,因为它会提示用户在应用程序的任何部分选择证书。 / p>

另一方面,我尝试将clientAuth设置为“false”,并使用 web.xml 仅在特定servlet上强制实施安全性。它工作正常,但这仅限于 tomcat-users.xml 文件中指定的用户,因此tomcat不授权其他用户的证书进入servlet。

我需要能够将客户端证书身份验证限制到我的应用程序的特定URL,同时接受任何证书(可信任,甚至没有),以进行身份​​验证和配置(servlet基本上从任何证书中读取信息,应用程序决定做什么)。

我知道有类似的问题,如[1],但我没有找到适合这些特殊需求的答案。非常感谢。

[1] Using CLIENT-CERT for Tomcat without specifying a username

1 个答案:

答案 0 :(得分:1)

ssl是一个网络层,工作在https以下。所以你无法用serlvet来控制它。

唯一的方法是在非ssl Web服务器中部署您的webapp。当servlet(或其他资源)需要SSL客户端身份验证时,只需重定向到https URL(与https端口相同的站点或其他站点)。