2014-01-25 3 views
1

Я пытаюсь добавить значение для атрибута для пользователя в LDAP. У меня есть пользователь "UID = TestUser, НУ = Local, НУ = Type1, НУ = People, dc = mnopid, DC = ком"LDAP ADD Атрибут пользователя

Для этого пользователя У меня есть схемы под "объектный: InetOrgPerson" и имя атрибута " mailid "

Я создал структуру LDAPMod. Я использую API ldap_add_ext для добавления атрибута.

Мой код находится на языке c.

Мой код для добавления его части (это не полный код)

  #define CHANGE_DN = "uid=testUser,ou=Local,ou=Type1,ou=People,dc=mnopid,dc=com"; 

     LDAPMod *mods[2] ; 
     LDAPMod modsattr ; 
     int rc,msgid; 

     char *mail[] = { "[email protected]",NULL }; 

     modsattr.mod_op = LDAP_MOD_ADD; 
     modsattr.mod_type = "mailid"; 
     modsattr.mod_values = mail; 

     mods[0]=&modsattr; 
     mods[1]=NULL; 

     rc = ldap_add_ext(ld, CHANGE_DN, mods, NULL, NULL ,&msgid); 

Все необходимые данные правильно defined.There нет ошибок компиляции.

Когда я запускаю код, который я получаю сообщение об ошибке, как «нарушение класса объекта (65)

Пожалуйста, помогите.

+0

'=' in '#define CHANGE_DN', конечно, не поможет. Мне даже интересно, как этот код компилируется. Если это не причина ваших неудач, код ошибки, который вы получаете, означает, что запрос не соответствует вашей схеме. Скорее всего, в вашей строке 'CHANGE_DN'. IIRC вы должны иметь возможность получать расширенные данные об ошибках, чтобы лучше понять причину нарушения (прямо сейчас я не помню, как, но на всякий случай проверяйте API). Во всяком случае, у вас есть мое сочувствие справиться с этим видом на протокол. –

+1

@kuroineko Эта «черная дыра протокола», тем не менее, чрезвычайно важна в мире ИТ, и ваше незатребованное мнение об этом совершенно излишне. – EJP

+1

@ EJP О, извините, не было никакого преступления. Мне приходилось справляться с этим несколько раз, и это оставило мне болезненные воспоминания. Однако я никогда не сомневался в его полезности. –

ответ

1

„InetOrgPerson“не имеет„mailid“атрибут. Если вы хотите для добавления произвольных атрибутов вам необходимо добавить класс «extensibleObject» к классам объекта, который вы можете делать только во время создания. В противном случае вам нужно использовать атрибут hat, который фактически разрешен схемой.

+0

- В схеме я узнал, что атрибут «mailid» не присутствует для «inetOrgPerson». Я попробовал добавить другое значение к атрибуту «cn» для пользователя, у которого уже был один атрибут cn. Это также дает мне такую ​​же ошибку. – user3013022

Смежные вопросы