使用以下代码,我可以使用本地LDAP服务器将用户testu
与密码testp
绑定/验证。在我的DIT中,这个用户也属于一个组,比如Administrators
。我怎样才能得到他所属的小组的名称,反之亦然,请检查该用户是否属于该小组?验证LDAP用户并检查它们是否属于组
public static void main(String[] args)
{
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
properties.put(Context.PROVIDER_URL, "ldap://localhost:10389");
// set properties for authentication
properties.put(Context.SECURITY_AUTHENTICATION, "simple");
properties.put(Context.SECURITY_PRINCIPAL, "cn=testu,ou=users,ou=system");
properties.put(Context.SECURITY_CREDENTIALS, "testp");
try {
InitialLdapContext ctx = new InitialLdapContext(properties, null);
} catch (NamingException e) {
e.printStackTrace();
}
}
在我的LDAP浏览器中,在树结构中,我有用户testu
cn=testu,ou=users,ou=system
而Administrators
组正在
cn=Administrators,ou=groups,ou=system
现在,我甚至不认为我我已经得到了该组中的用户,但假设我做了你将如何寻找它?我基本上是问如何通过LDAP相对于通过身份验证的用户进行搜索查询。
鉴于以下组:
cn=operations,ou=groups,ou=system
objectClass:groupOfNames (structural)
objectClass:top (abstract)
cn:operations
member:cn=soto,ou=users,ou=system
member:cn=testu,ou=users,ou=system
并且这个用户名:
cn=testu,ou=users,ou=system
objectClass:organizationalPerson (structural)
objectClass:person (structural)
objectClass:top (abstract)
cn:testu
sn:some name
userPassword:SHA hashed password [testp]
如何将我从这个用户拿到小组第一?
如何检查该权限?它可能不同于LDAP服务器到LDAP服务器。我使用的是Apache Directory Studio,我几乎可以浏览所有内容。 – 2013-02-15 14:20:08
又是什么意思由DIRECT会员?因为使用范围“子树”,您发布的查询不会返回任何内容。 – 2013-02-15 14:28:11
“直接”成员是一个组的正常成员,而另一个成员是另一个组的成员。一些LDAP实现可以将一个组作为另一个组的成员。我假设,您使用的用户没有适当的权限,或者您在所有错误的地方寻找组。 – jwilleke 2013-02-16 18:25:05