2011-04-07 106 views
8

我使用的OpenLDAP 2.4.11中的Fedora Core 13OpenLDAP:對於pwdAttribute,可以使用「userPassword」而不是「2.5.4.35」嗎?

我想創建一個密碼策略:

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 =配置模塊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 

回答

6

相反,我強迫爲pwdAttribute使用OID:

只要加載了相關架構和ppolicy疊加層,就可以指定OID或屬性名稱。

爲什麼你有objectClass =人呢?密碼策略不是一個人。通常使用objectClass = device作爲密碼策略的結構類。

+0

謝謝。我不知道objectClass = device。我只是爲它設置一個結構課。 – 2011-04-07 08:25:51

+0

我有幾個OU。每個OU都有幾個人。我可以爲OU分配不同的密碼策略嗎?如果是的話,我該怎麼做? – 2011-04-07 08:34:21

+0

不,您必須按人設置。 – EJP 2011-04-08 00:21:58

6

根據我的經驗,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 

在裝載前的疊加,我只能提供OID爲pwdAttribute。在使用--enable-ppolicy進行重建並添加了overlay條目後,我可以使用ldapmodify將pwdAttribute: 2.5.4.35替換爲pwdAttribute: userPassword

加載覆蓋後,我確實必須刷新pwdAttribute的值。

+0

你是對的pwdAttribute:userPassword。我現在就試過了 – damko 2013-01-19 07:51:40

0

我在一臺新服務器上將我的2.3轉換爲2.4,並且在Red Hat 6.3上出現同樣的錯誤。我使用pwdAttribute:2.5.4.35來代替,它加載了無問題。

1

我剛剛遇到了這個問題,並解決了上述問題。我正在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 =配置」域進行,即在數據庫外部,由機器的根用戶。後續步驟在「dc = example,dc = com」範圍內,所以可以通過rootDN完成。

第三步是爲您的密碼策略創建一個容器。這可能是可選的,我不知道 - 我創建了一個DN,如:

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

四,創建實際的政策 - 誰遇到了這個錯誤的人已經都這樣了,這是用的DN 「pwdAttribute」的東西是語法錯誤。在上面的覆蓋和模塊工作正確的情況下,你可以使用pwdAttribute:userPassword「而不會出現語法錯誤。當然,我的策略在ou容器中,除了」pwdPolicy「之外,我還使用了」device「的objectClass,作爲

最後有人建議在其他地方,你就可以實際使用的政策,當然。

這整個過程中取得了對我更困惑,因爲這麼多的文件出來有關於如何設置slapd.conf。我將Zytrax的大部分內容從「Rocket Scientists的LDAP」一書中整理出來,它涵蓋了模塊和覆蓋的內容,但在其密碼策略部分有一個錯誤或過時的示例(缺少結構對象類)

+0

謝謝你,很好的回答。我也必須這樣做:'ldapadd -QY EXTERNAL -f/etc/ldap/schema/ppolicy.ldif'來加載模式。 – 2017-04-16 22:43:29

相關問題