gpt4 book ai didi

java - 使用 LDAP、Java Play 框架通过 Active Directory 进行身份验证

转载 作者:行者123 更新时间:2023-12-04 04:42:23 25 4
gpt4 key购买 nike

我正在尝试使用 LDAP 通过 Windows Active Directory 进行身份验证。我有一个设置上下文的 LDAPContext 类和一个应该在 AD 中找到电子邮件的身份验证方法。

这是我的 LDAPContext 类:

public class LDAPContext extends InitialDirContext {

Hashtable<String, String> env = new Hashtable<String, String>();


public LDAPContext(String email, String password) throws NamingException
{
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://myintranet.com");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,"mail="+email+"\""); // specify the username
env.put(Context.SECURITY_CREDENTIALS,password);
DirContext ctx = new InitialDirContext(env);
}
}

这是我的身份验证方法:

public static User authenticate(final String email, final String password){
try {
LDAPContext adContext = new LDAPContext(email, password);
Attributes matchAttrs = new BasicAttributes(true);
matchAttrs.put(new BasicAttribute("mail", email));
NamingEnumeration<SearchResult> en = adContext.search("", matchAttrs);

while(en.hasMore()) {
System.out.println("Found email!!!");
}
} catch(NamingException e) {
System.out.println("NamingException");
}
...

我不断收到“NamingException”错误。我确定电子邮件在 AD 中并且电子邮件的指定名称是“邮件”。我做错了什么?

编辑:这是我遇到的具体错误:

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1 ]

这意味着凭据是错误的。我已经尝试对其进行硬编码,但它仍然不起作用。

最佳答案

问题是您尝试使用的 SECURITY_PRINCIPAL 值不是您可以绑定(bind)的有效值。只能绑定(bind)用户名,不能绑定(bind)与用户关联的属性。

Active directory 允许您绑定(bind)username@domain 或用户帐户的完整可分辨名称。 DN 值通常类似于...

cn=username,cn=Users,dc=abc,dc=mycompany,dc=com

但实际值取决于您的 AD 配置。

如果您想通过电子邮件地址查找用户,您需要使用管理员 ID(或具有搜索功能的某些 ID)进行绑定(bind),搜索具有该特定电子邮件地址的用户,然后重新绑定(bind)他们的用户名进行身份验证。

此外,并不是说它改变了什么,而是在绑定(bind)名称 ("mail="+email+"\"") 中你有一个结束符 " 而不是打开一个。

关于java - 使用 LDAP、Java Play 框架通过 Active Directory 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com