Как изменить пароли, используя System.DirectoryServices.Protocols - PullRequest
1 голос
/ 09 октября 2009

Нашим хранилищем пользователей является сервер LDAP, который называется eDirectory. Как изменить пароли пользователей с помощью System.DirectoryServices.Protocols?

Ответы [ 4 ]

5 голосов
/ 12 октября 2009

Я использовал подобный код для подключения к LDAP на основе Sun One для изменения пароля пользователя. (Не должно отличаться от Novell eDirectory ...)

using System.DirectoryServices.Protocols;
using System.Net;

//...

// Connect to the directory:
LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier("theServerOrDirectoryName");
// You might need to specify a full DN for "theUsername" (I had to):
NetworkCredential nc = new NetworkCredential("theUsername", "theOldPassword");
// You might need to experiment with setting a different AuthType:
LdapConnection connection = new LdapConnection(ldi, nc, AuthType.Negotiate);

DirectoryAttributeModification modifyUserPassword = new DirectoryAttributeModification();
modifyUserPassword.Operation = DirectoryAttributeOperation.Replace;
modifyUserPassword.Name = "userPassword";
modifyUserPassword.Add("theNewPassword");

ModifyRequest modifyRequest = new ModifyRequest("theUsername", modifyUserPassword);
DirectoryResponse response = connection.SendRequest(modifyRequest);
1 голос
/ 09 октября 2015

В книге приведен пример кода для смены пользователя и административного пароля с использованием System.DirectoryServices.Protocols Руководство разработчика .net по программированию служб каталогов .Я предполагаю, что не могу вставить здесь пример кода по причинам авторского права, но я могу порекомендовать купить книгу, если вы заинтересованы в работе с System.DirectoryServices.Protocols и System.DirectoryServices.

1 голос
/ 25 августа 2011

Я согласен с подходами двух Пер Ноальта и Мэттью Уайтеда. Но есть одна тонкость импорта.

Существует разница между сменой пароля пользователя и сменой административного пароля.

Если вы замените пароль пользователя, то есть изменение пароля администратора и, в зависимости от политик паролей, пароль может сразу истечь. (eDir использует срок действия пароля, а затем количество льготных входов в систему).

Если вы укажете старый и новый пароль, то вы будете выполнять сброс пароля, инициированный пользователем.

1 голос
/ 09 октября 2009

Вам необходимо удалить пароль, а затем повторно добавить его. Когда я сделал это, я использовал библиотеку LDAP от Novell. Возможно, вам придется поиграться с DirectoryEntry, чтобы заставить его работать.

Удаление нечитаемого атрибута из eDirectory - LDAP через ADSI / System.DirectoryServices


Вы можете столкнуться с проблемами в зависимости от типа пароля, который вы используете в eDirectory

LDAP / универсальный пароль с eDirectory 8,8


Как изменить eDirectory или универсальный пароль через LDAP вот образец ldif

dn: cn=<myuser>,ou=<myou>,o=<myo>
changetype: modify
replace: userPassword
userPassword: <newPassWord>
...