【问题标题】:How do I get LdapAttributes我如何获得 LdapAttributes
【发布时间】:2014-08-14 11:20:48
【问题描述】:

我正在尝试使用 Spring 将 ActiveDirectory 记录导出到 LDIF 格式的文件中。

我发现很多关于解析 LDIF 文件的信息,但关于导出到 LDIF 的信息却相对较少。使用 Spring 有一个 LdapAttributes 类,其 toString() 方法返回 LDIF 格式的字符串,但我首先看不到从哪里获取 LdapAttributes 实例。我在LdapTemplate 上看不到任何内容。

希望框架提供了一种简单的方法来实现这一点,而不是我必须自己构建LdapAttributes 对象。

【问题讨论】:

    标签: java spring ldap spring-ldap ldif


    【解决方案1】:
    【解决方案2】:

    嗯,我想出了这个:

    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;
        }
    }
    

    我不禁觉得必须有一些开箱即用的方法来做到这一点,尽管上述方法有效。

    【讨论】:

      【解决方案3】:
      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;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2021-05-16
        • 2013-10-23
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多