10

我在 Fedora Core 13 中使用 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

是否可以对 pwdAttribute 使用“userPassword”而不是“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
4

4 回答 4

5

根据我的经验,EJP 的回答是不正确的。

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

如果您的 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. 重建--enable-ppolicy并添加overlay条目后,我能够使用 ldapmodify 替换pwdAttribute: 2.5.4.35pwdAttribute: userPassword.

pwdAttribute加载叠加层后,我确实必须刷新 的值。

于 2012-03-20T18:59:50.213 回答
5

相反,我强制将 OID 用于 pwdAttribute:

您可以指定 OID 或属性名称,前提是相关架构和ppolicy覆盖都已加载。

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

于 2011-04-07T08:09:17.403 回答
2

我刚刚遇到了这个问题,并以与上述不同的方式解决了它。我在 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”域中完成的,即在数据库之外,由机器的root 用户完成。后续步骤在“dc=example,dc=com”范围内,因此可以由 rootDN 完成。

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

dn: ou=pwpolicies,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: pwpolicies

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

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

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

于 2013-08-21T21:08:18.360 回答
1

我在新服务器上将我的 2.3 转换为 2.4,但在 Red Hat 6.3 上遇到了同样的错误。我改用 pwdAttribute: 2.5.4.35 ,它加载时没有问题。

于 2012-12-28T14:27:23.387 回答