我正在尝试使用Spring将ActiveDirectory记录导出为LDIF格式的文件。
我找到了很多关于解析 LDIF文件的信息,但是关于导出到LDIF的信息相对较少。在Spring中有一个LdapAttributes
类,其toString()
方法返回LDIF格式的字符串,但我不知道从哪里获取LdapAttributes
实例。我在LdapTemplate
上看不到任何内容。
希望框架提供了一种简单的方法,而不是我自己必须构建LdapAttributes
对象。
答案 0 :(得分:4)
查看类似于非绑定LDAP SDK https://www.unboundid.com/products/ldap-sdk/docs/javadoc/com/unboundid/ldif/package-summary.html
的内容答案 1 :(得分:0)
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.DistinguishedName;
import org.springframework.ldap.core.LdapAttributes;
public class PersonMapper implements AttributesMapper {
@Override
public Object mapFromAttributes(Attributes attrs) throws NamingException {
String dnValue = (String) attrs.get("distinguishedName").get();
DistinguishedName dn = new DistinguishedName(dnValue);
LdapAttributes ldapAttrs = new LdapAttributes(dn);
for (NamingEnumeration<? extends Attribute> ne = attrs.getAll(); ne.hasMore(); ) {
ldapAttrs.put(ne.next());
}
return ldapAttrs;
}
}
我不禁觉得必须有一些更开箱即用的方法来做到这一点,尽管如上所述。
答案 2 :(得分:0)
LdapAttributes ldapAttributes = basic2LdapAttributes(result.getNameInNamespace(), result.getAttributes());
public static LdapAttributes basic2LdapAttributes(String distinguishedName, Attributes attributes) throws NamingException{
LdapAttributes ldapAttributes = new LdapAttributes();
ldapAttributes.setName(LdapUtils.newLdapName(distinguishedName));
for (NamingEnumeration<? extends Attribute> nameEnumeration = attributes.getAll(); nameEnumeration.hasMore();) {
ldapAttributes.put(nameEnumeration.next());
}
return ldapAttributes;
}