【问题标题】:LDAP: error code 65 - object class 'inetOrgPerson' requires attribute 'sn'LDAP:错误代码 65 - 对象类“inetOrgPerson”需要属性“sn”
【发布时间】:2016-03-29 13:51:42
【问题描述】:

我在我的 Spring 应用程序中使用 LdapTemplate。在添加记录时它给出错误 LDAP: error code 65 - object class 'inetOrgPerson' requires attribute 'sn'

我的仓库代码是

@Autowired
    private LdapTemplate ldapTemplate;

    @Autowired
    private PasswordEncoder passwordEncoder;

    public void setLdapTemplate(LdapTemplate ldapTemplate) {
        this.ldapTemplate = ldapTemplate;
    }

    public void create(User user) {
        Name dn = buildDn(user);
        DirContextAdapter context = new DirContextAdapter(dn);
        mapToContext(user, context);
        ldapTemplate.bind(dn, context, null);
    }

    private LdapName buildDn(User user) {
        return LdapNameBuilder
                .newInstance()
                .add("cn", user.getName())
                .add("sn", user.getLname())
                .add("uid", user.getUid())
                .add("userPassword", passwordEncoder.encode(user.getPassword()))
                .build();

    }

    private void mapToContext(User user, DirContextAdapter context) {
        context.setAttributeValues("objectclass", new String[] { "top", "inetOrgPerson" });
        context.setAttributeValue("uid", user.getName());
        context.setAttributeValue("userPassword",
                passwordEncoder.encode(user.getPassword()));

    }
}

我还将 inetOrgPerson 更改为 person,organizationalPerson 但它不起作用。

我可以在哪里从我的终端添加 ldif 文件

dn: ou=roles,dc=cofinding,dc=com
objectclass: top
objectclass: organizationalUnit
ou: roles

dn: ou=people,dc=cofinding,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people


# Users

dn: uid=admin1,ou=people,dc=cofinding,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Prashant
sn:Thorat
uid: admin1
userPassword: admin1Pass

dn: uid=admin2,ou=people,dc=cofinding,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Aniket
sn:Patil
uid: admin2
userPassword: admin2Pass

dn: uid=user1,ou=people,dc=cofinding,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Gautam
sn:Kanawade
uid: user1
userPassword: user1Pass


# Roles

dn: cn=USER,ou=roles,dc=cofinding,dc=com
objectclass: top
objectclass: groupOfNames
cn: USER
member: uid=admin1,ou=people,dc=cofinding,dc=com
member: uid=admin2,ou=people,dc=cofinding,dc=com
member: uid=user2,ou=people,dc=cofinding,dc=com

dn: cn=ADMIN,ou=roles,dc=cofinding,dc=com
objectclass: top
objectclass: groupOfNames
cn: ADMIN
member: uid=admin1,ou=people,dc=cofinding,dc=com
member: uid=admin2,ou=people,dc=cofinding,dc=com

【问题讨论】:

    标签: spring ldap spring-ldap apacheds


    【解决方案1】:
    private LdapName buildDn(User user) {
            return LdapNameBuilder
                    .newInstance()
                    .add("cn", user.getName())
                    .add("sn", user.getLname())
                    .add("uid", user.getUid())
                    .add("userPassword", passwordEncoder.encode(user.getPassword()))
                    .build();
    
        }
    
        private void mapToContext(User user, DirContextAdapter context) {
            context.setAttributeValues("objectclass", new String[] { "top", "inetOrgPerson" });
            context.setAttributeValue("uid", user.getName());
            context.setAttributeValue("userPassword",
                    passwordEncoder.encode(user.getPassword()));
    
        }
    

    尝试用下面的代码替换这段代码

    private LdapName buildDn(User user) {
                return LdapNameBuilder
                        .newInstance()
                        .add("ou", "people")
                        .add("uid", user.getUid())
                                      .build();
            }
    
    
    
       private void mapToContext(User user, DirContextAdapter context) {
                        context.setAttributeValues("objectclass", new String[] { "top", "inetOrgPerson" });
                        context.setAttributeValue("uid", user.getName());
            context.setAttributeValue("cn", user.getName());
            context.setAttributeValue("sn", user.getLname());
                        context.setAttributeValue("userPassword",
                                passwordEncoder.encode(user.getPassword()));
    
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2023-04-08
      相关资源
      最近更新 更多