LDAP 中的用户身份验证 java

User authentication in LDAP java

我是 LDAP 概念的新手,我能够成功连接到 LDAP 服务器。并且还能够插入和删除记录 to/from LDAP 数据库。接下来我需要做的是根据 LDAP 数据库记录对用户进行身份验证。 请帮帮我。 如果需要,我会分享源代码。 谢谢

我也使用 LDAP 进行身份验证。我推荐基于 [=14th=]token 的 auth。如果可以通过请求获得JWT令牌。这个 repo java-jwt 会很有帮助。

如果您不介意使用 Spring 安全性,请查看 this 文章。它将简化实施和配置。这是 LDAP 配置示例:

auth.authenticationProvider(ldapAuthenticationProvider)
    .ldapAuthentication()
    .ldapAuthoritiesPopulator(ldapAuthoritiesPopulator)
    .userSearchBase("ou=users")
    .userSearchFilter("(uid={0})")
    .groupSearchBase("ou=roles")
    .groupSearchFilter("(member={0})")
    .groupRoleAttribute("cn")
    .contextSource(contextSource);

尝试使用要验证的用户的 security_principal(用户名) 和 security_credentials(密码) 创建一个 InitialDirContext 对象。如果您能够创建对象,则用户已通过身份验证,否则会捕获异常并抛出它。

如果您需要使用 JNDI 和 LDAP,我们有 several samples 可以帮助您。

我们更喜欢使用真正的 LDAP SDK,如 https://www.ldap.com/developing-clients-apps 所示(我们使用并推荐 Java 的 UnboundID LDAP SDK)

您可能还应该考虑使用 OpenID Connect,因为这样您就可以将身份验证抽象化,从而不知道身份验证是如何进行的。