我遇到的问题是LDAP服务器上的角色和/或访问权限。我刚刚在我们的Sun Directory Server(版本7.0)中添加了密码修改扩展操作 - ACI,并且指定的roledn(cn =密码管理器,...)显然不对。我需要指定角色,以便用户可以更改自己的密码仅。会有什么作用?我该如何指定它?
服务器是Solaris 10.我在下面和下面的OID中包含了我正在尝试使用的python程序以及该程序的结果。 我借用堆栈中的this帖子中的代码大量借用。
在我的LDAP服务器中,我找到:
所选访问控制指令的属性
必填字段ACI语法:
(targetattr != "aci")(version 3.0; acl "Password Modify Extended Operation ";
allow( read, search, compare, proxy )
(roledn = " ldap:///cn=Password Managers,dc=example,dc=com" and authmethod = "SSL");)
ACI所在的条目:
oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config
我正在开发一个python 3.5程序来更改用户密码。这是迄今为止的代码:
import ldap3
import ssl
SERVER='ds2.example.com'
BASEDN = 'dc=channing,dc=example,dc=com'
USER = 'saltz'
SEARCHFILTER = '(uid=' + USER + ')'
CURRENTPWD="something"
NEWPWD="somethingelse"
user='uid=saltz,ou=People,dc=channing,dc=example,dc=com'
ldap_server = ldap3.Server(SERVER, port = 636, use_ssl = True,
get_info=ldap3.ALL)
conn = ldap3.Connection(ldap_server, user, CURRENTPWD, auto_bind=True)
modify = ldap3.extend.standard.modifyPassword.ModifyPassword(conn,
user, NEWPWD, CURRENTPWD, controls=None)
resp = modify.send()
print(modify.result)
这是我运行上述代码时得到的结果:
{'result': 50, 'description': 'insufficientAccessRights', 'dn': '',
'message': 'Access to feature "oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config" denied.',
'referrals': None, 'responseName': None, 'responseValue': None,
'type': 'extendedResp', 'new_password': None}
感谢您的帮助。