2011-09-19 32 views
0

我需要使用不同于“用户名”的Windows ID对用户进行身份验证。例如:windows ID是jSmith,但用户名是“Joe Smith”。我需要根据Windows ID找到Joe Smith,然后检查他是否是某个组的成员。LDAP:如何搜索Windows用户ID

我假设或希望Windows ID是用户的属性,但我是新来的LDAP,不知道如何搜索所有用户的特定属性。

回答

0

我假设您说Windows ID用于身份验证时,您的LDAP实际上是Active Directory。

如果你只是想找到LanId用户在Active Directory:

  1. 连接到主动使用Admin /服务帐户的用户名和密码。
  2. 搜索与以下过滤器用户: "(&(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); 

如果上面的代码无一例外成功执行,这意味着用户提供正确的用户名/密码

+0

好吧,我做了这个搜索过滤器,它工作得很好。 (显然有些术语是由名字组成的,但你明白了)。 “(&(ObjectCategory = person)(sAMAccountName = jSmith)(memberOf = CN = Blah,OU = Company-Users,DC = BlahBlah,DC = local))”现在我想将密码添加到过滤器中。任何人都知道密码的“关键”是什么?例如(passwordKey =“MyDogName13”)其中passwordKey是...在这个相同的主题...有什么办法来获得可用属性(键名称)的列表回来?谢谢。 – ClimberChick

+0

即使您可以检索密码,然后通过匹配进行身份验证,我也会推荐使用上面提到的“绑定身份验证”。我创建了一个简单的API来使用Active Directory进行身份验证和属性检索,您可以从这里获得:https://github.com/kdabir/active-directory-lookup(我刚刚签入,将写入自述文件不久) – kunal