【问题标题】:Query AD for active users查询活跃用户的 AD
【发布时间】:2017-05-11 09:00:47
【问题描述】:

我想创建一个脚本来识别通过 ldap 在活动目录中有效的 AD 用户。问题是我不知道活动目录中的有效用户到底是什么意思......

假设我们有一个 Windows 登录列表。我们想查询用户是否能够登录。这意味着该帐户没有过期,没有处于非活动状态,......还有什么?

res = l.search_s("DC=...",
                 ldap.SCOPE_SUBTREE,
                 '(&(objectClass=user)(sAMAccountName=%s))' % sAMAccountName,
                 ['lastlogon','accountExpires', 'cn', 'mail', 'lockoutTime'])

使用 if-else-if-else,我的脚本变得越来越复杂。我寻找一种清晰透明的查询方式:用户当前可以登录吗?

【问题讨论】:

  • 也许你想多了。如果我的理解正确,您需要的只是在过去 XX 天内登录域的所有非残疾用户的列表?
  • @T-Heron 是的,也许...是的,非禁用用户,未过期,去年登录。除此之外,我不知道我是否错过了什么......

标签: python active-directory ldap


【解决方案1】:

经过进一步研究:

你应该使用:

  • LastLogonTimeStamp 是时间戳:与 1 年前的时间戳比较
  • AccountExpires :值为 0 或 0x7FFFFFFFFFFFFFFF (9,223,372,036,854,775,807) 表示帐户永不过期。
  • lockoutTime : (lockoutTime=>0) : 这是帐户被锁定时的时间戳,所以如果设置了它就会被锁定(搜索 ldapwiki.com 以获取更多信息,如 我不能在帖子中放置超过 2 个链接;))

我不太了解ActiveDirectory,但是在ldap过滤器中进行所有这些测试不是更容易吗?

类似的东西(需要适配,对应属性LDAP语法)

(&
  (objectClass = user)
  (sAMAccountName = %s)
  (lastlogon < dateFrom1Year)
  (!(accountExpires = *))
  ...
)

【讨论】:

  • 感谢您的评论。 need to be adapted, corresponding to the attributes LDAP syntax 这就是问题所在。 :) 在 LDAP 或 Python 中...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多