Определите политику паролей AD программно - PullRequest
4 голосов
/ 14 февраля 2011

Я использую классы и методы System.DirectoryService (ADSI) для создания и изменения пользователей в Active Directory.

Недавно мы добавили функцию, позволяющую пользователям устанавливать свой собственный пароль через систему. Однако использование метода SetPassword вызывает исключение, когда пароль не принят набором политик паролей.

userEntry.Invoke("SetPassword", new object[] {password});

Мой вопрос: как проверить, соответствует ли пароль политике паролей, прежде чем пытаться использовать метод SetPassword?

Я прочитал в этом посте , что вы можете получить параметры политики паролей от узла корневого домена, но где я могу прочитать больше о том, что означает каждый атрибут? Например, какие символы необходимы для выполнения политики «Сложность»?

Как только я узнаю об этом, я смогу реализовать свой собственный метод проверки пароля, но, поскольку этот подход подвержен ошибкам, я бы предпочел использовать встроенную проверку и дать пользователю соответствующую информацию о том, что не так с его паролем .

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Я работаю над аналогичным проектом на моей работе.Мы запускаем приложение забытого пароля.В итоге я просто набрал Invoke("SetPassword", "[randomString]") и сохранил случайную строку для Invoke("ChangePassword","[randomString]","[user supplied pw]").Результат ChangePassword был возвращен пользователю.

SetPassword не проверяет сложность пароля или правила истории.Это то же самое, что щелкнуть правой кнопкой мыши пользователя в AD и выбрать «Сбросить пароль».ChangePassword однако, проверяет требования к истории паролей.

0 голосов
/ 14 февраля 2011

Политика сложности заключается в том, что она должна содержать три из пяти следующих типов:

  • Прописные буквы
  • Строчные буквы
  • Цифры
  • Не алфавитно-цифровые символы: ~! @ # $% ^ & * _- + = `| () {} [] :;" '<>,.? /
  • Юникод-символы в алфавитном порядкено не в верхнем и нижнем регистре.

Это также не может быть sAMAccountName или displayName (или его части). Вы можете прочитать об этом здесь . Другие правила политики паролей:в смежных документах .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...