使用python的ldap库,修改AD中用户密码报错
ringa_lee
ringa_lee 2017-04-18 09:30:35
0
1
550
ringa_lee
ringa_lee

ringa_lee

全部回覆(1)
Ty80

這個問題終於解決了···
1,因為修改密碼需要使用ldaps協議,所以首先需要搭建一個ldap的認證伺服器(需要配置域名,因為使用ip有可能connect不上),具體配置步驟可以給我留言,我將免費提供。
2,修改密碼的代碼如下:

# 修改密码时,不需要老密码的方式
def ldap_update_pass(old_pass, new_pass):
    ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
    my_ldap = ldap.initialize('ldaps://adc.xxx.com:636')    # ldaps://adc.xxx.com:636就是你配置的ldaps认证服务器
    my_ldap.set_option(ldap.OPT_REFERRALS, 0)
    my_ldap.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
    my_ldap.set_option(ldap.OPT_X_TLS, ldap.OPT_X_TLS_DEMAND)
    my_ldap.set_option(ldap.OPT_X_TLS_DEMAND, True)
    my_ldap.set_option(ldap.OPT_DEBUG_LEVEL, 255)
    try:
        dn = get_dn(3) # 这里获取用户的dn,因为重点是修改密码,所以get_dn()方法细节就不展示出来了
        my_ldap.simple_bind_s(dn, old_pass)
        unicode_pass = unicode("\"" + str(new_pass) + "\"", "iso-8859-1")
        password_value = unicode_pass.encode("utf-16-le")
        add_pass = [(ldap.MOD_REPLACE, 'unicodePwd', [password_value])]
        my_ldap.modify_s(dn, add_pass)
        return True
    except Exception, e:
        pass
    finally:
        my_ldap.unbind_s()
        del my_ldap
    return False
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!