Java LDAP:如何搜索具有windows id的用户

Java LDAP:如何搜索具有windows id的用户,java,ldap,Java,Ldap,我需要使用与用户名不同的windows ID对用户进行身份验证。例如:windows ID是jSmith,但用户名是Joe Smith。我需要根据windows ID找到Joe Smith,然后检查他是否是某个组的成员 我假设或希望windows ID是用户的一个属性,但我是LDAP新手,不知道如何在所有用户中搜索特定属性。当您说windows ID用于身份验证时,我假设您的LDAP实际上是Active Directory 如果您只想在Active Directory中通过LanId查找用户:

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


我假设或希望windows ID是用户的一个属性,但我是LDAP新手,不知道如何在所有用户中搜索特定属性。

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

如果您只想在Active Directory中通过LanId查找用户:

使用管理员/服务帐户用户名和密码连接到活动服务器。 使用以下筛选器搜索用户: &objectClass=usersAMAccountName=+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=personsAMAccountName=jSmithmemberOf=CN=Blah,OU=Company Users,DC=BlahBlah,DC=local现在我想将密码添加到过滤器中。有人知道密码的钥匙是什么吗?例如passwordKey=MyDogName13,其中passwordKey是。。。在同一个话题上。。。有没有办法获取可用属性键名称的列表?谢谢。即使您可以检索密码,然后通过匹配进行身份验证,我建议您使用上面提到的绑定身份验证。我已经创建了一个简单的api来使用Active Directory进行身份验证和属性检索,您可以从这里获得:我今天刚刚签入,不久将编写一个自述文件