这里我附加了python文件,以便在windows active Directory 2008 r2中创建用户和身份验证用户
create.py
import ldap
import ldap.modlist as modlist
name='testing3'
password='p@ssw0rd'
l = ldap.initialize('ldap://##2.168.3#.##')
l.simple_bind_s('Administrator@example.local', 'p@ssw0rd1')
dn="cn="+name+",ou=oli,dc=example,dc=local"
attrs = {}
attrs['objectclass'] = ['Top','person','organizationalPerson','user']
attrs['cn'] = name
attrs['displayName'] = name
attrs['name'] = name
attrs['givenName'] = name
attrs['mail'] = name
attrs['ou'] = "Users"
#attrs['pwdLastSet'] = "-1"
attrs['userPrincipalName'] = name + "@naanal.local
attrs['userAccountControl'] = '514'
attrs['sAMAccountName'] = name
attrs['userPassword'] = password
ldif = modlist.addModlist(attrs)
l.add_s(dn,ldif)
l.unbind_s()
使用此程序在Active目录中创建用户,但无法创建启用的用户帐户。我可以使用userAccountcontrol ='''512`但它不工作.userAccountcontrol ='514'它的工作但用户帐户被禁用。 使用ldap修改更改userAccountcontrol获取错误“当我尝试启用用户帐户获取错误时”{'info':'0000052D:SvcErr:DSID-031A120C,问题5003(WILL_NOT_PERFORM),数据0 \ n','desc ':'服务器不愿意执行'}“”
Authe.py
import ldap
username='shan'
password='p@ssw0rd'
LDAP_SERVER = 'ldap://###.##.##.##'
LDAP_USERNAME = '%s@example.local' % username
LDAP_PASSWORD = password
base_dn = 'DC=example,DC=example'
ldap_filter = 'userPrincipalName=%s@example.local' % username
attrs = ['memberOf']
try:
ldap_client = ldap.initialize(LDAP_SERVER)
ldap_client.set_option(ldap.OPT_REFERRALS,0)
ldap_client.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
print 'successfull'
except ldap.INVALID_CREDENTIALS:
ldap_client.unbind()
print 'Wrong username ili password'
except ldap.SERVER_DOWN:
print 'AD server not awailable'
使用create.py创建用户帐户。然后在活动目录中手动启用用户帐户。之后我尝试验证未检测到的已创建用户帐户。但是使用authentic.py文件检测到手动创建的帐户 我正在使用Ubuntu 14.04 64位
答案 0 :(得分:0)
您的代码存在两个问题:
Active Directory将密码存储在unicodePwd
属性中,而不是userPassword
。有关详细信息,请参阅此link。本文还解释了unicodePwd
的值必须如何编码(UTF-16)
另一个问题(在参考文章中也有解释)是,每当您更改密码属性(包括创建用户)时,您必须通过安全连接连接到Active Directory。以ldap://
开头的网址让我相信您的连接不安全。
我希望这会有所帮助。