Я использую LDAP для управления пользователями и настроил его с помощью Spring Boot Ldap. Вход в систему (аутентификация) работает правильно, и теперь я пытаюсь зарегистрировать нового пользователя и вставить запись в LDAP с помощью метода ldapTemplate.bind ().
Постановка на учет
public String create(UserResponsePojo userResponsePojo) {
try {
Name dn = LdapNameBuilder
.newInstance()
.add("o", "company")
.add("ou", "department")
.build();
DirContextAdapter context = new DirContextAdapter();
context.setDn(dn);
context.setAttributeValues("objectclass", new String[]{"top", "person", "inetOrgPerson"});
context.setAttributeValue("cn", userResponsePojo.getUsername());
context.setAttributeValue("sn", userResponsePojo.getLastname());
context.setAttributeValue("description", userResponsePojo.getUserrole());
context.setAttributeValue("mail", userResponsePojo.getUid());
context.setAttributeValue("userPassword", userResponsePojo.getPassword());
ldapTemplate.bind(context);
return "success";
} catch (Exception e) {
e.printStackTrace();
return "failed";
}
}
ldif файл
# id=00000001
dn: o=company
objectClass: organization
structuralObjectClass: organization
o: company
entryCSN: 20130409162114.626166Z#000000#000#000000
entryUUID: 3e7f8668-357d-1032-8a6b-c5bcf7f703f0
creatorsName: cn=Manager,o=company
createTimestamp: 20130409162114Z
modifiersName: cn=Manager,o=company
modifyTimestamp: 20130409162114Z
contextCSN: 20130702105648.506150Z#000000#000#000000
contextCSN: 20191018052018.692119Z#000000#001#000000
contextCSN: 20191018044350.858888Z#000000#002#000000
contextCSN: 20191018053729.621549Z#000000#003#000000
# id=00000002
dn: ou=department,o=company
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
ou: department
entryCSN: 20130409162455.623488Z#000000#000#000000
entryUUID: c2390a06-357d-1032-8a6c-c5bcf7f703f0
creatorsName: cn=Manager,o=company
createTimestamp: 20130409162455Z
modifiersName: cn=Manager,o=company
modifyTimestamp: 20130409162455Z
# id=00000003
dn: mail=abc@gmail.com,ou=department,o=company
businessCategory: unset
sn: unset
userPassword:: e1NTSEF9RTFoVUNEM1pPc3RBQ2g4ZHWlVDTk80QWN6ajk3aHFC
mail: abc@gmail.com
objectClass: top
objectClass: person
objectClass: inetOrgPerson
structuralObjectClass: inetOrgPerson
entryUUID: 842a22b0-a8c6-1032-9ba8-e1e428e5443b
creatorsName: cn=Manager,o=company
createTimestamp: 20130903092528Z
cn: abc
description: Member
entryCSN: 20130903092528.695993Z#000000#000#000000
modifiersName: cn=Manager,o=company
modifyTimestamp: 20130903092528Z
# id=00000004
dn: mail=xyz@gmail.com,ou=department,o=company
uid: unset
mail: xyz@gmail.com
sn: unset
userPassword:: e1NTSEF9OXU3aEFVQkthdZMb284ZWQrNkthdUtrN1NDUnAraDFU
objectClass: top
objectClass: person
objectClass: inetOrgPerson
structuralObjectClass: inetOrgPerson
entryUUID: eafcbd14-a8ca-1032-9bac-e1e428e5443b
creatorsName: cn=Manager,o=company
createTimestamp: 20130903095658Z
cn: xyz
description: Member
businessCategory: e-Governance
entryCSN: 20130927145536.344831Z#000000#000#000000
modifiersName: cn=Manager,o=company
modifyTimestamp: 20130927145536Z
Когда вызывается ldapTemplate.bind (), он выдает ошибку LDAP: код ошибки 53 - нет глобальных высших знаний
org.springframework.ldap.OperationNotSupportedException: [LDAP: error code 53 - no global superior knowledge]; nested exception is javax.naming.OperationNotSupportedException: [LDAP: error code 53 - no global superior knowledge]; remaining name 'ou=department,o=company'
Я искал решение в Интернете и обнаружил, что эта ошибка возникает, когда мы пытаемся вставить пользователя в какой-то каталог, который недоступен в файле ldif, но, как я вижу, я пытаюсь использовать тот же каталог, который также доступен в файле ldif как хорошо. Я перепробовал много комбинаций DN, но не нашел нужного решения. Пожалуйста, помогите мне пройти через это. Заранее спасибо!