【问题标题】:Authenticate user with Smart Card and LDAP in Tomcat 7在 Tomcat 7 中使用智能卡和 LDAP 对用户进行身份验证
【发布时间】:2014-09-22 16:32:59
【问题描述】:

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

我正在尝试找到一种方法来添加通过相同 LDAP 与智能卡(如果提供)对用户进行身份验证的功能。

我已将 server.xml 更改为 clientAuth=want,但想知道在通过 LDAP 提供证书时是否有办法对用户进行身份验证,然后将它们重定向到登录表单。这可能吗?

编辑: 下面的 Michael-O 被标记为正确答案,因为我能够通过创建一个扩展 FormAuthenticator 的自定义类然后在 Tomcat 的 authenticationator.properties 中注册它来实现这一点。这使我可以在请求中检查来自客户端的 x509cert。如果证书存在且有效,则对用户进行身份验证并将其转发到受保护的资源页面。如果不存在或无效,则将用户转发到表单登录。

【问题讨论】:

    标签: java tomcat authentication


    【解决方案1】:

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

    【讨论】:

    • Tomcat 已经接受基于 SSL 的应用程序身份验证。在服务器上设置了密钥和信任库。它目前适用于带有 LDAP 组集的表单登录。我可以输入用户的用户名和密码并登录。当从卡中提供接受的客户端证书时,我试图让 Tomcat 重定向到安全资源。
    • 这很奇怪。表单身份验证如何连接到证书身份验证? Cert auth 比 HTTP 低一层。我对您的表单内容感到困惑。
    • 该应用已经在使用带有 SSL 和 clientAuth=false 的表单身份验证。我正在查看当我设置 clientAuth=want 并且存在来自卡的证书时是否有可能重定向到用户安全资源。
    • 理论上是的。但我认为你需要推出自己的身份验证器。您将需要一个由 SSL 和表单重定向组成的混合身份验证器。 Tomcat 提供的基本身份验证器不提供。
    • 谢谢。我试图通过覆盖我的自定义 JNDIRealm 类中的一些方法来做到这一点。你知道检查角色的主要方法是什么吗?我还以为是JNDIRealm.getRoles,但是好像没有进去。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多