1. 程式人生 > >Windows環境下OpenLDAP的設定

Windows環境下OpenLDAP的設定

2. 安裝並配置ldap
2.1 直接雙擊預設安裝;
2.2 配置ldap:
1.)刪除所有data/目錄下的檔案;
2.)建立domain.ldif,內容如下(根據具體情況進行相應的更改, 在編輯domain.ldif檔案時,不能儲存為UTF-8編碼,否則解析會出現錯誤,可以儲存成ASCII格式):
dn:dc=kkdpro,dc=tc,dc=com
objectclass:dcObject
objectclass:organization
o:companyinfo
dc:kkdpro

3.)修改slapd.conf的最後一項為:
#######################################################################
# BDB database definitions
#######################################################################

database bdb
suffix "dc=kkdpro,dc=tc,dc=com"
rootdn "cn=root,dc=kkdpro,dc=tc,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}9btKtIgM2P4lTEGiYufRxNN5rFeRVE9k

[注:rootpw是管理員密碼,這裡必須用密文設定(密文可以用slappasswd -s pwd命令得到)]
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory ./data
# My custom conf

4.)執行命令: slapadd -f slapd.conf -l data/domain.ldif
[注:以上所有步驟均不需要啟動ldap]

5.)啟動ldap服務(執行slapd或者啟動openldap服務)

可使用客戶端工具(ldap browser)進行測試。
[注:預設v3,埠是389]

另外一篇:
在windows上配置openldap

(1) 如果你不幸得到"ldap_bind: Invalid credentials (49)"錯誤,就表示你要麼給出了錯誤的"cn="條目,要麼給出了錯誤的密碼。
只有普通名(cn)和密碼在slapd.conf中都正確,才不會出現任何關於他們的任何莫名其妙的資訊
(還有一種可能就是ldif檔案每行後邊不能有空格,不然會報語法錯誤)

(2) 往伺服器新增資料時首先要先加入一個根節點,不然報no such entry(object)之類的錯誤
加根節點的ldif範例如下:
dn:dc=gsmd,dc=com
dc:gsmd
description:www.cssis.com
objectClass:dcObject
objectClass:organization
o:cssis
注意:dn要和slapd的suffix "dc=gsmd,dc=com"相對應
新增根節點的命令:ldapadd -f ./data/root.ldif -x -D "cn=Manager,dc=gsmd,dc=com" -w secret

(3)建立旁支節點比如mail
根節點的ldif範例如下:
dn: ou=mail,dc=gsmd,dc=com
objectClass: organizationalUnit
ou: mail
description: Mail Directory
新增旁支節點的命令如下:ldapadd -f ./data/mail.ldif -x -D "cn=Manager,dc=gsmd,dc=com" -w secret

(4)建立自己的資料庫表(schema檔案)
檔案的名稱即相當於表名
接下來就是要定義'表的欄位'了

定義:
AttributeTypeDescription = "(" whsp
numericoid whsp ; AttributeType identifier
[ "NAME" qdescrs ] ; name used in AttributeType
[ "DESC" qdstring ] ; description
[ "OBSOLETE" whsp ]
[ "SUP" woid ] ; derived from this other
; AttributeType
[ "EQUALITY" woid ; Matching Rule name
[ "ORDERING" woid ; Matching Rule name
[ "SUBSTR" woid ] ; Matching Rule name
[ "SYNTAX" whsp noidlen whsp ] ; Syntax OID
[ "SINGLE-VALUE" whsp ] ; default multi-valued
[ "COLLECTIVE" whsp ] ; default not collective
[ "NO-USER-MODIFICATION" whsp ]; default user modifiable
[ "USAGE" whsp AttributeUsage ]; default userApplications
whsp ")"

AttributeUsage =
"userApplications" /
"directoryOperation" /
"distributedOperation" / ; DSA-shared
"dSAOperation" ; DSA-specific, value depends on server
其中,NAME是表示屬性的名字,DESC是說明,SUBSTR是字串匹配,EQUALITY是相等性匹配,SYNTAX是表示欄位的資料型別,
SINGLE-value表示這個屬性只有一個值,有些屬性可以有多個值,比如聯絡地址等。預設的話,是多值的。
whsp是一個空格,numericoid是一個全域性唯一的點分十進位制格式的OID(例如:1.1.0),qdescrs是一個或者多個名稱,
woid或者是OID的名稱,或者是OID後面加上可選的長度說明(比如:{10})。
(可參見RFC2252 Attribute Type Description)

示例:
attributeType ( 2.5.4.41 NAME 'name'
DESC 'name(s) associated with the object'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
說明:EQUALITY和SYNTAX宣告列屬性的型別,注意要與倒入的資料一致

schema檔案結尾對'表'進行宣告
示例:
objectclass ( 1.1.2.1
NAME 'cssisMail'
DESC 'the mailSystem of cssis'
SUP top
STRUCTURAL
MUST ( employeeID $ employeeName $ mailAddress )
MAY ( mobilePhone )
)
說明:NAME為表的名字,SUP此表的父表(有點像面向物件) top表示頂層沒有父級表
MUST表示必選項,MAY表示可以選項(要把schema檔案include進slapd.conf才能使用)