Не удалось обновить EmployeeId в ActiveDirectory через LDAP

Я использую Spring LDAP для создания новых учетных записей пользователей в Active Directory. Это отлично работает, однако, когда я добавляю атрибут EmployeeId, я получаю исключение javax.naming.directory.InvalidAttributeValueException (атрибут не найден). Этот атрибут не отображается по умолчанию, и он был включен в нашей Active Directory — я могу увидеть его в списке атрибутов, если я выполняю поиск с помощью Spring LdapQuery. Какие-нибудь хитрости для установки EmployeeId через LDAP? Код прост, и я подозреваю, что это будет какой-то параметр конфигурации AD.

DirContextAdapter context = new DirContextAdapter(dn);
context.setAttributeValues("objectclass", new String[] { "person", "user" });
context.setAttributeValue("displayName", employee.getFullName());
context.setAttributeValue("givenName", employee.getFirstName());
context.setAttributeValue("sn", employee.getLastName());
context.setAttributeValue("cn", employee.getCn());
**context.setAttributeValue("employeeID", employee.getEmployeeID());**
context.setAttributeValue("sAMAccountName", employee.getAccountName());
...
ldapTemplate.bind(context);

person user416316    schedule 09.07.2015    source источник
comment
Какой тип возврата employee.getEmployeeID()? были ли у вас права на обновление (только администратор домена) для добавления/изменения этого значения? msdn.microsoft.com/ en-us/library/windows/desktop/   -  person barthel    schedule 09.07.2015
comment
У этой учетной записи есть права администратора домена.   -  person user416316    schedule 09.07.2015
comment
Попробуйте использовать organizationalPerson как дополнительный objectClass. Атрибут employeeID является атрибутом Организации-Лица.   -  person barthel    schedule 09.07.2015
comment
Спасибо за рекомендацию. Я тоже пробовал это, без изменений: 'context.setAttributeValues("objectclass", new String[] { "person", "user", "organizationalPerson" }); javax.naming.directory.InvalidAttributeValueException: неправильное значение атрибута "employeeId"   -  person user416316    schedule 09.07.2015
comment
Является ли возвращаемый тип employee.getEmployeeID() String или, может быть, null?   -  person barthel    schedule 09.07.2015


Ответы (1)


Я понял. Тип данных в DTO был int. Изменение на строку при установке атрибута устранило проблему:

context.setAttributeValue("employeeId", Integer.toString(employee.getEmployeeID()));
person user416316    schedule 09.07.2015