2009-09-01 2 views
4

У меня есть интересная проблема, я пишу веб-страницу/службу управления паролями, и я пытаюсь найти способ определить, когда пароль пользователя будет expire, так что я могу вручную сбросить их другие пароли и отправить их по электронной почте и т. д.ASP.NET C# Active Directory - см., Как задолго до истечения срока действия пароля пользователя

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

Таким образом, я думаю, что я ищу идеи, чтобы проверить, когда пароль пользователя истечет, кроме использования свойства pwdlastset и вычисления оставшегося времени.

Спасибо, кучка.

ответ

8

Это на самом деле совсем немного сложнее, чем вы могли бы подумать на первый ...

  • для того, чтобы знать, как долго пароль может быть действительным, вы должны читать «политику домена» и выяснить, что путь

Тогда:

  • если пользователь имеет "UF_DONT_EXPIRE_PASSWD" флаг установлен в его "UserAccountControl", его пароль никогда не истечет
  • , если значение «pwdLastSet» (значение «ADSLargeInteger» или Int64, которое довольно сложно читать в первую очередь) равно 0, пользователь должен будет изменить свой пароль при следующем входе в систему
  • , если Значение «pwdLastSet» равно -1, пароль никогда не был установлен
  • , только если ни одно из указанных выше не является истинным, тогда значение «pwdLastSet» содержит дату, когда последний пароль был установлен, к которому вы можете добавить «MaxPasswordAge "из политики домена, и это даст вам дату, когда пароль пользователя истечет.

Фу! Считаете ли вы, что это будет сложно? :-)

Marc

PS: Если вы серьезно о программировании AD на основе .NET, вы должны иметь эту книгу:

DevGuide http://ecx.images-amazon.com/images/I/512V652XBSL._SS500_.jpg

The .NET Developer's Guide to Directory Services Programming

Книга содержит все полезные свойства, такие как определение даты истечения срока действия пароля пользователя, определение состояния блокировки учетной записи пользователя и многое другое - настоятельно рекомендуется! Джо и Райан отлично справились со всей этой информацией и объяснили это так, что даже средний программист Джо, как и я, может понять это :-)

+0

кажется, что пользователь, выполняющий мои запросы AD, не имел разрешения на просмотр свойств из всех, так что теперь кажется, что я могу просмотреть атрибут pwdlastset, теперь возникает новая проблема с учетными записями, которые технически отключены, но не указаны как таковые в useraccountcontrol, есть ли другой параметр, где он будет доступен для просмотра? – Jimmy

+0

phew!Вы ударили все тяжелые, а? Определение блокировки учетной записи - это еще одна одиссея. К сожалению, флаг UF_LOCKOUT в UserAccountControl на самом деле не используется для этого :-( –

+0

@JImmy: получите книгу, о которой я упоминал, - она ​​содержит все ответы и многое другое :-) Хороший материал действительно –

0

Насколько я знаю, если значение pwdlastset равно нулю или отсутствует, пользователю требуется либо изменить пароль при следующем входе в систему, либо их учетная запись настроена с использованием пароля без истечения срока действия. Может ли это быть причиной того, что вы видите?

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