ASP.NET C#Active Directory - 查看用户密码到期之前的时间

Jim*_*mmy 4 asp.net active-directory c#-3.0

我有一个有趣的问题,我正在编写密码管理网页/服务,我正试图找到一种方法来确定用户的密码何时到期,这样我就可以用它手动重置其他密码并发送电子邮件等.

我遇到的问题是,当我试图遍历我的用户时,我发现他们中的大部分没有pwdlastset属性,所以我无法确定它什么时候会过期.

所以我想我正在寻找一个好方法的想法来检查用户的密码何时到期,除了使用pwdlastset属性和计算剩余时间.

谢谢一堆.

mar*_*c_s 8

它实际上比你最初想象的要复杂得多......

  • 为了知道密码有效期多长,您需要阅读"域策略"并找出相应的方法

然后:

  • 如果用户在其"userAccountControl"中设置了"UF_DONT_EXPIRE_PASSWD"标志,则其密码永不过期
  • 如果"pwdLastSet"值("ADSLargeInteger"或Int64值,在第一个位置读取相当棘手)为0,则用户下次登录时必须更改其密码
  • 如果"pwdLastSet"值为-1,则从未设置密码
  • 只有当上述情况都不成立时,"pwdLastSet"值才包含上次设置密码的日期,您可以从域策略中添加"MaxPasswordAge",这将为您提供用户密码的日期即将到期

唷!你觉得这会很棘手吗?:-)

PS:如果你认真对待基于.NET的AD编程,你应该有这本书:

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

.NET开发人员目录服务编程指南

这本书包含了确定用户密码到期日期,确定用户帐户锁定状态等所有好处 - 强烈推荐!Joe和Ryan做了出色的工作,将所有这些信息汇总并解释,以便即使像我这样的普通Joe程序员也能理解它:-)