Java 使用Tomcat 7中的智能卡和LDAP对用户进行身份验证

Java 使用Tomcat 7中的智能卡和LDAP对用户进行身份验证,java,tomcat,authentication,Java,Tomcat,Authentication,我有一个在Tomcat7上运行的web应用程序,它配置了一个自定义JNDIRealm,并且我的web.xml中的login-config-auth方法设置为“FORM” 我正试图找到一种方法,添加通过智能卡(如果有的话)通过同一LDAP对用户进行身份验证的能力 我已将我的server.xml更改为具有clientAuth=want,但我想知道,当通过LDAP提供证书时,是否有办法对用户进行身份验证,然后将其重新引导到登录表单上。这可能吗 编辑:下面的Michael-O被标记为正确答案,因为我能够

我有一个在Tomcat7上运行的web应用程序,它配置了一个自定义JNDIRealm,并且我的web.xml中的login-config-auth方法设置为“FORM”

我正试图找到一种方法,添加通过智能卡(如果有的话)通过同一LDAP对用户进行身份验证的能力

我已将我的server.xml更改为具有
clientAuth=want
,但我想知道,当通过LDAP提供证书时,是否有办法对用户进行身份验证,然后将其重新引导到登录表单上。这可能吗


编辑:下面的Michael-O被标记为正确答案,因为我能够通过创建扩展FormAuthenticator的自定义类并在Tomcat的authenticator.properties中注册来实现这一点。这允许我在请求中检查来自客户端的x509cert。如果证书存在且有效,请验证用户并将其转发到安全资源页面。如果不存在或无效,请将用户转发到表单登录。

您现在显然不知道您想要什么或实际使用的技术。智能卡身份验证是相互SSL身份验证。因此,首先需要配置Tomcat以接受基于SSL的身份验证。您的领域将收到X509证书,并将尝试在数据存储中查找您的DN。存储可以是任何内容、数据库、文件、目录等。

Tomcat已经接受应用程序基于SSL的身份验证。在服务器上设置了密钥和信任存储。它当前使用带有LDAP组集的表单登录。我可以输入用户的用户名和密码并登录。我试图让Tomcat重定向到安全资源,当一个接受的客户端证书从一张卡上出现时。这很奇怪。form auth如何连接到cert auth?Cert auth是HTTP下面的一层。我对你的表单内容感到困惑。应用程序已经在使用带有SSL和clientAuth=false的表单验证。当我设置clientAuth=want,并且有一张卡上的证书时,我想看看是否有可能重定向到用户安全资源。理论上,是的。但我认为你需要使用你自己的验证器。您将需要一个由SSL和表单重定向组成的混合身份验证程序。Tomcat提供的基本身份验证器不提供此功能。谢谢。我试图通过重写自定义JNDIRealm类中的一些方法来实现这一点。您知道检查角色的主要方法是什么吗?我以为它是jndiream.getRoles,但它似乎不在其中。