在LDAP中需要roledn进行密码修改扩展操作以允许用户更改自己的密码

时间:2017-08-04 01:55:40

标签: python python-3.x ldap

我遇到的问题是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}

感谢您的帮助。

0 个答案:

没有答案