次のコードを使用すると、ユーザーtestu
をパスワードtestp
でローカル LDAP サーバーにバインド/認証できます。私の DIT では、このユーザーはグループにも属していますAdministrators
。彼が属しているグループの名前を取得するにはどうすればよいですか、またはその逆に、そのユーザーがそのグループに属しているかどうかを確認するにはどうすればよいですか?
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]
このユーザーからグループを取得するにはどうすればよいですか?