当前位置:  开发笔记 > 编程语言 > 正文

Python LDAP写入Active Directory的属性

如何解决《PythonLDAP写入ActiveDirectory的属性》经验,为你挑选了0个好方法。

我能够通过python-ldap绑定和查询Active Directory,除了在AD上添加或修改属性之外没有任何问题.我可以添加属性,但编码似乎已关闭,因为所有文本都是乱码.

我尝试用utf8编码我的字符串和其他几个没有运气的字符串.

我还尝试使用域管理员帐户绑定以及绑定到我将更改属性的用户帐户,无论如何都是相同的结果.

这是我用来更新属性的方法:

LdapHelpers类:

def __init__(self):
    import ldap

    # set globals
    self.server = 'LDAP://dc.mycompany.com'
    self.admin_dn = 'CN=Administrator,CN=users,DC=mycompany,DC=com'
    self.admin_pass = 'coolpassword'

    # init LDAP connection
    #ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, 0)
    ldap.set_option(ldap.OPT_REFERRALS, 0)
    ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
    ldap.protocol_version = ldap.VERSION3
    self.ldap = ldap.initialize(self.server)

def update_attribute(self, attrib, value):
    try:
        import ldap
        conn = self.ldap
        conn.simple_bind_s(self.admin_dn, self.admin_pass)
        mod_attrs = [( ldap.MOD_REPLACE, "mobile", "6306564123")]

        # I have tried other variations of the above
        # mod_attrs = [( ldap.MOD_REPLACE, "mobile", "6306564123".encode('utf-8)]

        conn.modify_s('CN=Mike Smith,OU=GoogleApps,DC=company,DC=com', mod_attrs)
        print 'record updated'

    except ldap.LDAPError as e:
        return e.message

通过终端执行ldapsearch这是属性的样子:

mobile:: MC8sAQAAAAAQNA==

当我设置移动设备时,这就是'Hello World'的样子:

mobile:: 77+9ehsCAAAAABDvv70V

我检查了MSDN,它说ldap属性只是一个Unicode字符串.

系统:Ubuntu 15.10 64位Python:2.7.10 python-ldap == 2.4.21

作为旁注,我可以在没有任何问题的情况下搜索AD并解析/显示返回的用户属性,问题似乎只是创建或修改此编码问题的属性.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有