仅当用户选择对系统进行身份验证时,才如何启用相互身份验证?

时间:2019-07-01 08:33:02

标签: java ssl tomcat mutual-authentication

我们为用户提供了不同类型的身份验证机制,以对我们的应用程序进行身份验证。 其中之一是使用安装在其上的智能卡证书。因此,我配置了tomcat server.xml文件(clientAuth = true),并将客户端证书添加到了我的密钥库文件中。当用户点击主页时,浏览器会弹出用户认证证书列表。当用户选择其中一个进行身份验证时,它将重定向到欢迎页面(登录页面),其中显示身份验证方法列表。但是我要实现的是,当用户点击主页时,仍然应该首先显示欢迎页面。如果仅在这种情况下用户选择通过证书进行身份验证,则应启用相互身份验证并在浏览器上显示用户的证书。但是,如果这不是用户选择的选项,则我们不应该向最终用户索取证书,并使用他们选择的不同选项对它们进行身份验证。我不能使用clientAuth = want,在登录页面之前,仍然弹出证书列表。

当前,我很困惑,因为我无法弄清楚如何仅使用一个tomcat server.xml文件根据用户的喜好来适应不同的情况。任何了解它的指南/提示都表示赞赏。

1 个答案:

答案 0 :(得分:0)

简而言之,就是不能仅通过配置来做到这一点。您将需要至少编写一个自定义的Authenticator以及自定义的Realm。

如果您使用Web应用程序的多个实例,那么仅配置的解决方案应该是可能的。 1个需要CLIENT-CERT,另一个使用替代方法。缺点是,您必须使用相同的身份验证配置,多次部署相同的应用程序两次。