Openldap:是否可以使用;“用户密码”;而不是",;2.5.4.35“;为了礼物?

Openldap:是否可以使用;“用户密码”;而不是",;2.5.4.35“;为了礼物?,ldap,openldap,Ldap,Openldap,我正在FedoraCore13中使用Openldap 2.4.11 我正在尝试创建密码策略: dn: cn=default,ou=policies,dc=estream,dc=com,dc=my objectClass: person objectClass: pwdPolicy objectClass: top cn: default pwdAttribute: 2.5.4.35 sn: test 如果我将pwdAttriute指定为“userPassword”,我会得到一个错误 LDAP:

我正在FedoraCore13中使用Openldap 2.4.11

我正在尝试创建密码策略:

dn: cn=default,ou=policies,dc=estream,dc=com,dc=my
objectClass: person
objectClass: pwdPolicy
objectClass: top
cn: default
pwdAttribute: 2.5.4.35
sn: test
如果我将pwdAttriute指定为“userPassword”,我会得到一个错误

LDAP: error code 21 - pwdAttribute: value #0 invalid per syntax
相反,我强制将OID用于pwdAttribute:

pwdAttribute: 2.5.4.35
PWDATAttribute是否可以使用“用户密码”而不是“2.5.4.35”

我尝试将openldap配置为在cn=config中加载模块ppolicy.la,但在重新启动slapd服务几次后,它似乎不起作用:

dn: cn=module{0},cn=config
objectClass: olcConfig
objectClass: olcModuleList
objectClass: top
cn: module{0}
olcModuleLoad: {0}/usr/lib64/openldap/ppolicy.la
相反,我强制将OID用于pwdAttribute:

pwdAttribute: 2.5.4.35
您可以指定OID或属性名称,前提是同时加载了相关架构和
p策略
覆盖


为什么有objectClass=person?密码策略不是一个人。通常使用objectClass=device作为密码策略的结构类。

以我的经验,EJP的答案是不正确的

我在运行openldap 2.4.29时收到了相同的错误消息。密码策略覆盖允许使用
pwdAttribute:userPassword
,但前提是启用了覆盖。否则,该值将被上述消息拒绝(
pwdAttribute:value#0根据语法无效

如果您的OpenLDAP安装使用动态模块,请确保包括

moduleload      ppolicy.la
slapd.conf
文件中(或
cn=config
数据库中合适的等效文件)

然后为相应的数据库加载覆盖:

database        bdb
suffix          "o=example.com"
rootdn          "cn=Directory Manager,o=example.com"
rootpw          password
directory       /opt/openldap-2.4.29/var/openldap-data/example.com
overlay         ppolicy
在加载覆盖之前,我只能为
pwdAttribute
提供OID。在使用
--启用ppolicy
重建并添加
覆盖
条目后,我能够使用ldapmodify将
pwdAttribute:2.5.4.35
替换为
pwdAttribute:userPassword


加载覆盖后,我确实必须刷新
pwdAttribute
的值。

我在新服务器上将我的2.3转换为2.4,在Red Hat 6.3上遇到了相同的错误。我使用了pwdAttribute:2.5.4.35,它加载了w/o问题。

我只是遇到了这个问题,并以与前面不同的方式解决了它。我正在CentOS 6.4上设置一个新的LDAP(用于最终在RHEL 6.4上部署),它默认为“(cn=config)”配置方案,因此上面关于修改slapd.conf的所有说明(无疑非常好)都不适用

通过“(cn=config)”方式(在某些网站上也称为“slapd.d”),有很多步骤可以让覆盖层正常工作。我正在处理的默认CentOS 6.4 LDAP包括ppolicy模式,但它没有被激活

要使其运行,有许多步骤:

首先,“ppolicy”模块是动态的,您必须确保它包含在运行时模块列表中。默认的CentOS安装没有任何模块,因此我首先必须打开模块,然后将ppolicy添加到列表中。本LDIF的功能是:

dn: cn=Module{0},cn=config
objectClass: olcModuleList
cn: Module{0}
olcModuleLoad: ppolicy
如果以后要添加更多模块,只需将其他olcModuleLoad条目附加到此dn

其次,必须为要应用它的数据库打开覆盖。创建另一个dn,因此:

dn: olcOverlay=ppolicy,olcDatabase={2}bdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
前两个步骤由机器的根用户在“cn=config”域中完成,即在数据库之外。后续步骤在“dc=example,dc=com”范围内,因此可以由rootDN完成

第三步是为密码策略创建一个容器。这可能是可选的,我不确定--我创建了一个dn,如:

dn: ou=pwpolicies,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: pwpolicies
第四,创建您的实际策略——遇到这个错误的人已经有了这个,这是带有“pwdAttribute”的dn,它得到了语法错误。在正确完成上述覆盖和模块工作后,您可以使用pwdAttribute:userPassword“而不会出现语法错误。当然,我的策略在ou容器中,并且我使用了一个objectClass“device”和“pwdPolicy”,正如其他地方所建议的那样

最后,您当然可以实际使用策略


这整个过程让我更加困惑,因为太多的文档都是关于如何设置slapd.conf的。我从Zytrax的“火箭科学家LDAP”一书中拼凑了大部分内容,这本书很好地涵盖了模块和覆盖内容,但有一个错误或过时的示例(缺少结构对象类)在他们的密码策略部分。

谢谢。我不知道objectClass=device。我只是为它设置了一个结构类。我有几个OU。每个OU都有几个人。我可以为OU分配不同的密码策略吗?如果可以,我可以怎么做?不,你必须为每个人设置密码。你对PWDATAttribute:userPassword的看法是正确的。我刚刚尝试了它。nowWell当然,它只有在启用的情况下才起作用。这很难让我的答案不正确。原始答案说有必要提供OID,这是不正确的。几年后进行了编辑,使您的答案与我已经指出的相同,即覆盖允许指定OID或名称换言之,我修正了我的答案是正确的,你还没有修改你的正确。时间戳和编辑历史使它足够清楚。当我考虑上下文时,我的任何东西都是不正确的;最坏的是过时的。我不可能在别人纠正自己错误答案的机会下保持旧答案。谢谢,回答得很好。我还必须这样做:
ldapadd-QY EXTERNAL-f/etc/ldap/schema/ppolicy.ldif
来加载模式。