1

我已经用代码管理不同用户的 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 服务器配置中修复?谢谢你的帮助。为语法错误道歉。

4

0 回答 0