Spring LDAP 1.3.0ライブラリを使用して Java で内部 LDAP サーバーにアクセスしていますが、1 つのことを行うのに問題があります: LDAP の任意の構造の内部属性を取得するにはどうすればよいですか? たとえば、ユーザーのmemberOf属性を取得するにはどうすればよいでしょうか?
私はこれまでたくさん検索しましたが、Spring LDAP を使用してそれについて何も見つけられませんでした。どんなアイデアでも大歓迎です。ありがとう。
Spring LDAP 1.3.0ライブラリを使用して Java で内部 LDAP サーバーにアクセスしていますが、1 つのことを行うのに問題があります: LDAP の任意の構造の内部属性を取得するにはどうすればよいですか? たとえば、ユーザーのmemberOf属性を取得するにはどうすればよいでしょうか?
私はこれまでたくさん検索しましたが、Spring LDAP を使用してそれについて何も見つけられませんでした。どんなアイデアでも大歓迎です。ありがとう。
コメントで言ったように、UserAttributeMapperはあなたの友達です!
ユーザーが複数の 'memberof' を持っている場合:
static List<List<String>> getPersonGroupsByAccountName(String accountName){
EqualsFilter filter = new EqualsFilter("sAMAccountName", accountName);
return ldap.search(DistinguishedName.EMPTY_PATH,filter.encode(),new AttributesMapper(){
public Object mapFromAttributes(
javax.naming.directory.Attributes attrs)
throws javax.naming.NamingException {
List<String> memberof = new ArrayList();
for (Enumeration vals = attrs.get("memberOf").getAll(); vals.hasMoreElements();) {
memberof.add((String)vals.nextElement());
}
return memberof;
}
});
これを行うためのより良い方法があると確信していますが、うまくいきます。
また、odmManager でも機能します。何かのようなもの
DistinguishedName dn = new DistinguishedName("The path your are searching in");
SearchControls searchControls = new SearchControls();
searchControls.setReturningObjFlag(true);
searchControls.setReturningAttributes("your attributes, as an array of strings");
return odmManager.findAll(User.class, dn, searchControls);
これを使用して、「createTimestamp」などのフィールドを取得します ....