当登录失败时,我会获得一个ldap.INVALID_CREDENTIALS登录名,但是这可能是由于密码错误或因为该帐户被锁定.第三次尝试后,该帐户被锁定.
我想检测到该帐户被锁定,并报告给沮丧的用户,而不是相同的“无效登录”消息.
搜索我找到的解决方案:
> AD不使用userAccountControl LOCKED标志;
>应该使用lockoutTime属性
我应该使用的LDAP查询来查找被锁定的用户是:
(&(objectClass=user)(lockoutTime>=1))
或针对特定用户:
(&(objectClass=user)(sAMAccountname=jabberwocky)(lockoutTime>=1))
但是这不行,每次查询都不会返回任何结果.
解决方法 lockoutTime中的值为零表示未锁定.所以,你应该尝试这个.(&(objectClass=user)(!lockoutTime=0))
其实上面的查询还不是100%正确.如果您从MSDN读取精美打印,Microsoft建议您将Lockout-Time属性添加到Lockout-Duration属性,然后将其与当前时间进行比较.那是因为有一个叫锁闭持续时间的东西.一旦锁定持续时间过去,用户将自动解锁. “锁定时间为零”表示帐户永久锁定,直到管理员解锁为止.
看这个MSDN article
总结This attribute value is only reset when the account is logged onto
successfully. This means that this value may be non zero,yet the
account is not locked out. To accurately determine if the account is locked out,you must add the Lockout-Duration to this time and compare the result to the current time,accounting for local time zones and daylight savings time.
以上是内存溢出为你收集整理的检测在LDAP中是否使用LDAP锁定Active Directory用户帐户全部内容,希望文章能够帮你解决检测在LDAP中是否使用LDAP锁定Active Directory用户帐户所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)