4

Spring LDAP 1.3.0ライブラリを使用して Java で内部 LDAP サーバーにアクセスしていますが、1 つのことを行うのに問題があります: LDAP の任意の構造の内部属性を取得するにはどうすればよいですか? たとえば、ユーザーのmemberOf属性を取得するにはどうすればよいでしょうか?

私はこれまでたくさん検索しましたが、Spring LDAP を使用してそれについて何も見つけられませんでした。どんなアイデアでも大歓迎です。ありがとう。

4

3 に答える 3

4

コメントで言ったように、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;
        }
    });

これを行うためのより良い方法があると確信していますが、うまくいきます。

于 2012-08-24T16:06:35.133 に答える
0

また、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」などのフィールドを取得します ....

于 2012-04-20T08:54:47.450 に答える