使用 ldap3 Python 获取 Active Directory 中的用户状态(禁用或活动)

kir*_*yha 4 python active-directory ldap3

我正在获取 Active Directory 中所有用户的列表,并且我需要检查其状态 \xe2\x80\x94 如果用户处于活动状态或已禁用状态。我希望userAccountControl应该返回用户状态,但除了一个(返回 66048)之外的所有用户,我只得到 512,并且这与用户状态无关(据我所知)。

\n\n
from ldap3 import Server, Connection\n\nserverName = 'LDAP://server'\ndomainName = 'name'\nuserName = 'superuser'\npassword = 'password'\nbase = 'longString'\n\nserver = Server(serverName)\nconn = Connection(server, read_only=True, user='{0}\\\\{1}'.format(domainName, userName), password=password, auto_bind=True)\n\nconn.search(base, '(objectclass=person)', attributes=['displayName', 'mail', 'userAccountControl','sAMAccountName'])\n\nfor i in conn.entries:\n    print 'USER = {0} : {1} : {2}'.format(i.sAMAccountName.values[0], i.displayName.values[0], i.userAccountControl.values[0])\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

用户 = ABC:约翰·史密斯:512\n 用户 = DEF:莎拉·康纳:514\n 用户 = GHI:托马斯·安德森:66048

\n
\n\n

这是获取用户状态的正确方法吗?还有其他方法可以通过某些带有 UI 的应用程序检查 AD 用户状态吗?

\n

kir*_*yha 5

根据userAccountControl 标志

512 - 普通帐户 (512),

514 - 禁用帐户 (2 + 512),

66048 - 普通帐户 + 永不过期的密码 (65536 + 512)。

  • 更好的方法描述于:/sf/answers/1907229341/ (3认同)