我已经用代码管理不同用户的 AD 属性:
l = ldap.initialize('ldap://172.25.1.2')
l.simple_bind_s(admin_dn, admin_pw)
user_dn="dn_here"
change_attr = [(ldap.MOD_REPLACE, 'attr_to_change', new_value)]
l.modify_s(user_dn,change_attr)
l.unbind_s()
它适用于所有必要的属性,除了 unicodePwd。在寻找解决方案后,我发现应该使用 ldaps 连接和端口 636 ( Python+LDAP+SSL ) 更改 unicodePwd。所以我试着用那个例子:
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
l = ldap.initialize('ldaps://172.25.1.2:636')
l.set_option(ldap.OPT_REFERRALS, 0)
l.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
l.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
l.set_option( ldap.OPT_X_TLS_DEMAND, True )
l.set_option( ldap.OPT_DEBUG_LEVEL, 255 )
l.simple_bind_s(admin_dn, admin_pw)
#change unicodePwdCOde here
l.unbind_s()
但出现错误:
ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}
它应该在我的代码中有任何解决方案,还是应该从 AD 服务器配置中修复?谢谢你的帮助。为语法错误道歉。