0
我需要使用不同于“用户名”的Windows ID对用户进行身份验证。例如:windows ID是jSmith,但用户名是“Joe Smith”。我需要根据Windows ID找到Joe Smith,然后检查他是否是某个组的成员。LDAP:如何搜索Windows用户ID
我假设或希望Windows ID是用户的属性,但我是新来的LDAP,不知道如何搜索所有用户的特定属性。
我需要使用不同于“用户名”的Windows ID对用户进行身份验证。例如:windows ID是jSmith,但用户名是“Joe Smith”。我需要根据Windows ID找到Joe Smith,然后检查他是否是某个组的成员。LDAP:如何搜索Windows用户ID
我假设或希望Windows ID是用户的属性,但我是新来的LDAP,不知道如何搜索所有用户的特定属性。
我假设您说Windows ID用于身份验证时,您的LDAP实际上是Active Directory。
如果你只是想找到LanId用户在Active Directory:
"(&(objectClass=user)(sAMAccountName=" + searchUsername + "))"
如果要对用户进行认证:
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// can make it variable, not needed so far
environment.put(Context.SECURITY_AUTHENTICATION, "simple"); // can make it variable, not needed so far
environment.put(Context.PROVIDER_URL, url);
environment.put(Context.SECURITY_PRINCIPAL, username + "@" + domain); // This is specific to AD
environment.put(Context.SECURITY_CREDENTIALS, password);
return new InitialLdapContext(environment, null);
如果上面的代码无一例外成功执行,这意味着用户提供正确的用户名/密码
好吧,我做了这个搜索过滤器,它工作得很好。 (显然有些术语是由名字组成的,但你明白了)。 “(&(ObjectCategory = person)(sAMAccountName = jSmith)(memberOf = CN = Blah,OU = Company-Users,DC = BlahBlah,DC = local))”现在我想将密码添加到过滤器中。任何人都知道密码的“关键”是什么?例如(passwordKey =“MyDogName13”)其中passwordKey是...在这个相同的主题...有什么办法来获得可用属性(键名称)的列表回来?谢谢。 – ClimberChick
即使您可以检索密码,然后通过匹配进行身份验证,我也会推荐使用上面提到的“绑定身份验证”。我创建了一个简单的API来使用Active Directory进行身份验证和属性检索,您可以从这里获得:https://github.com/kdabir/active-directory-lookup(我刚刚签入,将写入自述文件不久) – kunal