使用Python更新AD中的LDAP属性

问题描述

当我尝试使用以下代码更新Active Directory属性时:

dn = (
    "CN=user_ldap,OU=dept_name,OU=Application,"
    "OU=Service Accounts,OU=Domain Users,DC=company-corp,DC=global"
)

# define the server
server = ldap3.Server(
    "ldaps.company-corp.global",get_info=ldap3.ALL,port=636,use_ssl=True
)

# define the connection
conn = ldap3.Connection(server,dn,psw,auto_bind=True)

conn.start_tls()

userID = "jdoe"

# perform the Modify operation
conn.modify(
    f"CN={userID},OU=managed,DC=global",{"displayName": [(ldap3.MODIFY_REPLACE,["Doe,John D"])]},)

print(conn.result)

我收到以下错误

{'结果':32,'描述':'noSuchObject','dn':'OU =受管理,OU =域用户,DC = company-corp,DC = global','消息':“ 0000208D: NameErr:DSID-03100241,问题2001(NO_OBJECT),数据0,最佳匹配项:\ n \ t'OU =受管,OU =域用户,DC = ssnc-corp,DC =全局'\ n \ x00“,' Referrals':无,'type':'modifyResponse'}

请告知。

谢谢。

解决方法

NO_OBJECT错误通常意味着找不到具有指定DN的对象(在这种情况下,cn = jdoe,ou = managed,ou = domain users,dc = company-corp,dc = global)。当服务帐户没有权限来读取记录或完全限定的DN不正确时,可能会出现错误。

要消除不正确的标准DN,您可以尝试搜索对象(例如搜索sAMAccountName = LogonIDGoesHere)并检索DN值。

要消除访问,可以使用Active Directory用户和计算机检查帐户对对象的有效权限。在“安全性”选项卡上,单击“高级”。在高级安全设置窗口中,单击“有效访问”选项卡。单击“选择用户”链接以选择您的服务帐户,然后单击“查看有效访问权限”以查看是否允许使用“读取所有属性”或“读取常规信息”之类的内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...