ติดตั้ง ldap และ ldaps server ใช้เป็น user account

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 3-09-2564
ดูแลโดย WIBOON

  • ทดสอบกับ ubuntu 12.04 server
  • ทดสอบกับ ubuntu 14.04 server
  • ทดสอบกับ ubuntu 16.04 server
  • ทดสอบกับ ubuntu 18.04 server slapd 2.4.42
  • ทดสอบกับ ubuntu 20.04 server slapd 2.4.49
  • ตัวอย่างนี้ติดตั้ง ldap ใน server ที่มี FQDN คือ ldap.example.com
  • ตัวอย่างนี้สร้าง ldap dc=example,dc=com และมีข้อมูลดังนี้
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com
dn: ou=groups,dc=example,dc=com
dn: ou=execs,ou=groups,dc=example,dc=com
dn: cn=nana,ou=execs,ou=groups,dc=example,dc=com
dn: ou=staffs,ou=groups,dc=example,dc=com
dn: cn=koko,ou=staffs,ou=groups,dc=example,dc=com
dn: cn=momo,ou=staffs,ou=groups,dc=example,dc=com
dn: ou=people,dc=example,dc=com
dn: cn=lala,ou=people,dc=example,dc=com
dn: cn=lulu,ou=people,dc=example,dc=com
dn: ou=students,ou=groups,dc=example,dc=com
dn: cn=5310110293,ou=students,ou=groups,dc=example,dc=com
dn: cn=5410110308,ou=students,ou=groups,dc=example,dc=com
dn: cn=5410210081,ou=students,ou=groups,dc=example,dc=com
dn: cn=5510210058,ou=students,ou=groups,dc=example,dc=com
dn: cn=5210310095,ou=students,ou=groups,dc=example,dc=com
dn: cn=5710310067,ou=students,ou=groups,dc=example,dc=com
dn: cn=5511210020,ou=students,ou=groups,dc=example,dc=com
dn: cn=5611210004,ou=students,ou=groups,dc=example,dc=com
dn: cn=juju,ou=people,dc=example,dc=com
dn: cn=jaja,ou=people,dc=example,dc=com


ติดตั้งโปรแกรม slapd เพื่อใช้เป็น OpenLDAP database


[ช่วงแรก ติดตั้ง LDAP server]

1. ติดตั้งโปรแกรม

mama@rd:~$ sudo apt-get install slapd ldap-utils
Administrator password: 123456
Confirm password: 123456

ผลลัพธ์ output ที่ได้

Setting up libltdl7:amd64 (2.4.6-0.1) ...
Setting up libodbc1:amd64 (2.3.1-4.1) ...
Setting up libslp1:amd64 (1.2.1-11) ...
Setting up slapd (2.4.42+dfsg-2ubuntu3.1) ...
  Creating new user openldap... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.
Setting up ldap-utils (2.4.42+dfsg-2ubuntu3.1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for systemd (229-4ubuntu7) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for ufw (0.35-0ubuntu2) ...


2.ตั้งค่าเริ่มต้น ให้ตอบคำถามตามข้อมูลตัวอย่าง สำหรับ ubuntu 20.04 จะไม่ม่คำถาม Allow LDAPv2 protocol?

mama@rd:~$ sudo dpkg-reconfigure slapd
[sudo] password for mama:
Omit OpenLDAP server configuration? ตอบ No
DNS domain name ตอบ example.com
Organization name ตอบ RD
Administrator password ตอบ 123456
Confirm password ตอบ 123456
Database backend to use ตอบ MDB
Do you want the database to be removed when slapd is purged? ตอบ Yes
Move old database? ตอบ Yes
Allow LDAPv2 protocol? ตอบ No

ผลลัพธ์ output ที่ได้

  Moving old database directory to /var/backups:
  - directory unknown... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.


3.ทดสอบดูการดึงข้อมูลด้วย command line

mama@ubuntu:~$ ldapsearch -x -b dc=example,dc=com
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: rd
dc: example

# admin, example.com
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

จะพบว่าในตอนแรกไม่มีข้อมูลอื่นนอกจาก cn=admin

4.สร้าง domain example.com พร้อมกับ users จำนวนหนึ่ง
ต้องสร้างข้อมูลด้วยวิธีสร้างไฟล์ ldif (ตัวอย่างนี้ใช้เอดิเตอร์ชื่อ vi ท่านอาจเลือกใช้ nano ก็ได้) ใส่ข้อมูลตัวอย่าง ดังนี้

mama@ubuntu:~$ vi create-example.com.ldif
# Starter kit for create user in domain dc=example,dc=com
# Create 1st tree OU=groups
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

# Create sub tree OU=execs,OU=groups
dn: ou=execs,ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: execs

# Create 1 user in tree OU=execs,OU=groups
dn: cn=nana,ou=execs,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: nana
sn: Na
givenName: Na
cn: nana
displayName: Na Na
userPassword: 123456
mail: nana@example.com

# Create sub tree OU=staffs,OU=groups
dn: ou=staffs,ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: staffs

# Create 2 users in tree OU=staffs,OU=groups
dn: cn=koko,ou=staffs,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: koko
sn: Ko
givenName: Ko
cn: koko
displayName: Ko Ko
userPassword: 123456
mail: koko@example.com

dn: cn=momo,ou=staffs,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: momo
sn: Mo
givenName: Mo
cn: momo
displayName: Mo Mo
userPassword: 123456
mail: momo@example.com

# Create 2nd tree OU=people
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

# Create 2 users in tree OU=people
dn: cn=lala,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
uid: lala
sn: La
givenName: La
cn: lala
displayName: La La
userPassword: 123456
mail: lala@example.com

dn: cn=lulu,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
uid: lulu
sn: Lu
givenName: Lu
cn: lulu
displayName: Lu Lu
userPassword: 123456
mail: lulu@example.com


5.เพิ่ม object ลงใน LDAP server จากไฟล์ ldif ที่สร้างไว้

mama@ubuntu:~$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f create-example.com.ldif
Enter LDAP Password:

ผลลัพธ์ output ที่ได้

adding new entry "ou=groups,dc=example,dc=com"

adding new entry "ou=execs,ou=groups,dc=example,dc=com"

adding new entry "cn=nana,ou=execs,ou=groups,dc=example,dc=com"

adding new entry "ou=staffs,ou=groups,dc=example,dc=com"

adding new entry "cn=koko,ou=staffs,ou=groups,dc=example,dc=com"

adding new entry "cn=momo,ou=staffs,ou=groups,dc=example,dc=com"

adding new entry "ou=people,dc=example,dc=com"

adding new entry "cn=lala,ou=people,dc=example,dc=com"

adding new entry "cn=lulu,ou=people,dc=example,dc=com"

ทดสอบ

mama@ubuntu:~$ ldapsearch -xLLL -b "dc=example,dc=com" uid=lulu
dn: cn=lulu,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
uid: lulu
sn: Lu
givenName: Lu
cn: lulu
displayName: Lu Lu
mail: lulu@example.com

คำสั่งที่ใช้ตรวจสอบข้อมูลแบบอื่น ๆ

mama@ubuntu:~$ sudo slapcat | grep ^uid
uid: nana
uid: koko
uid: momo
uid: lala
uid: lulu

mama@ubuntu:~$ sudo slapcat | grep ^dn
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com
dn: ou=groups,dc=example,dc=com
dn: ou=execs,ou=groups,dc=example,dc=com
dn: cn=nana,ou=execs,ou=groups,dc=example,dc=com
dn: ou=staffs,ou=groups,dc=example,dc=com
dn: cn=koko,ou=staffs,ou=groups,dc=example,dc=com
dn: cn=momo,ou=staffs,ou=groups,dc=example,dc=com
dn: ou=people,dc=example,dc=com
dn: cn=lala,ou=people,dc=example,dc=com
dn: cn=lulu,ou=people,dc=example,dc=com

mama@ubuntu:~$ ldapsearch -H "ldap://127.0.0.1" -D "cn=lulu,ou=people,dc=example,dc=com" -W -x -b "dc=example,dc=com" uid=lulu
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: uid=lulu
# requesting: ALL
#

# lulu, people, example.com
dn: cn=lulu,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
uid: lulu
sn: Lu
givenName: Lu
cn: lulu
displayName: Lu Lu
userPassword:: MTIzNDU2
mail: lulu@example.com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


[ช่วงที่สอง ติดตั้ง LDAPS server]

6.เพื่อความสะดวก ให้เข้าเป็น root และตรวจสอบว่าได้ติดตั้ง ssl-cert แล้ว แล้วจึงติดตั้งโปรแกรม gnutls-bin

mama@ubuntu:~$ sudo su -
root@ubuntu:~# apt-get install ssl-cert
root@ubuntu:~# apt-get install gnutls-bin

ผลลัพธ์ output ที่ได้

Setting up libopts25:amd64 (1:5.18.7-3) ...
Setting up gnutls-bin (3.4.10-4ubuntu1.1) ...


7.ทำคำสั่งดังนี้

root@ubuntu:~# certtool --generate-privkey --outfile /etc/ssl/private/ldap-ca-key.pem
Generating a 3072 bit RSA private key...

root@ubuntu:~# certtool --generate-self-signed --load-privkey /etc/ssl/private/ldap-ca-key.pem --outfile /etc/ssl/certs/ldap-ca-cert.pem
Generating a self signed certificate...
Please enter the details of the certificate's distinguished name. Just press enter to ignore a field.
Common name: RDCCPSU
UID:
Organizational unit name: COMCEN
Organization name: PSU
Locality name: HATYAI
State or province name: SONGKHLA
Country name (2 chars): TH
Enter the subject's domain component (DC):
This field should not be used in new certificates.
E-mail: mama@example.com
Enter the certificate's serial number in decimal (default: 6320370347434695588):

Activation/Expiration time.
The certificate will expire in (days): 3650

Extensions.
Does the certificate belong to an authority? (y/N): N
Is this a TLS web client certificate? (y/N): N
Will the certificate be used for IPsec IKE operations? (y/N): N
Is this a TLS web server certificate? (y/N): N
Enter a dnsName of the subject of the certificate:
Enter a URI of the subject of the certificate:
Enter the IP address of the subject of the certificate:
Enter the e-mail of the subject of the certificate: mama@example.com
Will the certificate be used for signing (required for TLS)? (Y/n): N
Will the certificate be used for encryption (not required for TLS)? (Y/n): N
(Ubuntu 20.04) Will the certificate be used for ... ? (Y/n): N
(Ubuntu 20.04) Will the certificate be used for ... ? (Y/n): N
(Ubuntu 20.04) Will the certificate be used for ... ? (Y/n): N
Enter the URI of the CRL distribution point:


ตรงนี้จะแสดงข้อมูล X.509 Certificate Information:

Is the above information ok? (y/N): Y
Signing certificate...


8.ทำคำสั่งต่อไป

root@ubuntu:~# adduser openldap ssl-cert
Adding user `openldap' to group `ssl-cert' ...
Adding user openldap to group ssl-cert
Done.
root@ubuntu:~# chgrp ssl-cert /etc/ssl/private/ldap-ca-key.pem
root@ubuntu:~# chmod g+r /etc/ssl/private/ldap-ca-key.pem


9.ตรวจสอบ directory permission และ owner ของ /etc/ssl/ ต้องได้ drwx--x--- และ root ssl-cert

root@ubuntu:~# ls -l /etc/ssl/
total 36
drwxr-xr-x 2 root root     20480 Aug 19 10:02 certs
-rw-r--r-- 1 root root     10835 Apr 15 12:28 openssl.cnf
drwx--x--- 2 root ssl-cert  4096 Aug 19 10:00 private

root@ubuntu:~# ls -l /etc/ssl/certs/ldap-ca-cert.pem
-rw-r--r-- 1 root root 1736 Aug 19 10:11 /etc/ssl/certs/ldap-ca-cert.pem


10.ตรวจสอบ file permission และ owner ของ ldap-ca-key.pem ต้องได้ -rw-r----- และ root ssl-cert

root@ubuntu:~# ls -l /etc/ssl/private/ldap-ca-key.pem
-rw-r----- 1 root ssl-cert 8282 Aug 19 10:00 /etc/ssl/private/ldap-ca-key.pem


11.สร้างไฟล์เพื่อเพิ่มค่าที่เกี่ยวกับ TLS เข้าไปใน cn=config เพิ่มข้อมูลตามนี้

root@ubuntu:~# vi ssl.ldif
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
-
add: olcTLSCRLCheck
olcTLSCRLCheck: none
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap-ca-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap-ca-key.pem


12.สั่งรีสตาร์ท OpenLDAP

root@ubuntu:~# systemctl restart slapd.service
root@ubuntu:~# systemctl status slapd.service
- slapd.service - LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol)
   Loaded: loaded (/etc/init.d/slapd; bad; vendor preset: enabled)
   Active: active (running) since Fri 2016-08-19 10:20:53 ICT; 6s ago


13.เพิ่มค่าที่เกี่ยวกับ TLS เข้าไปใน cn=config

root@ubuntu:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl.ldif -v
ldap_initialize( ldapi:///??base )
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
add olcTLSCipherSuite:
        NORMAL
add olcTLSCRLCheck:
        none
add olcTLSVerifyClient:
        never
add olcTLSCertificateFile:
        /etc/ssl/certs/ldap-ca-cert.pem
add olcTLSCertificateKeyFile:
        /etc/ssl/private/ldap-ca-key.pem
modifying entry "cn=config"
modify complete


14.แก้ไขไฟล์ slapd เพื่อเพิ่มคำว่า ldaps:/// (ประมาณบรรทัดที่ 24) จะได้ใช้ได้ทุกแบบ

root@ubuntu:~# vi /etc/default/slapd
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"


15.แก้ไขไฟล์ ldap.conf

root@rd:~# vi /etc/ldap/ldap.conf
TLS_REQCERT never


16.สั่งรีสตาร์ท OpenLDAP

root@ubuntu:~# systemctl restart slapd.service
root@ubuntu:~# systemctl status slapd.service
- slapd.service - LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol)
   Loaded: loaded (/etc/init.d/slapd; bad; vendor preset: enabled)
   Active: active (running) since Fri 2016-08-19 10:27:06 ICT; 2s ago


17.ออกจาก mode root

root@ubuntu:~# exit
logout



[วิธีเพิ่ม group ใหม่ชื่อ students (ou=students,ou=groups,dc=example,dc=com)]

18.สร้างข้อมูลด้วยวิธีสร้างไฟล์ ldif (ตัวอย่างนี้ใช้เอดิเตอร์ชื่อ vi ท่านอาจเลือกใช้ nano ก็ได้) ใส่ข้อมูลดังนี้

mama@ubuntu:~$ vi create-students.ldif
# Create sub tree OU=students,OU=groups
dn: ou=students,ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: students

# Create 8 students in tree OU=students,OU=groups
dn: cn=5310110293,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5310110293
sn: 5310110293
givenName: somsak
cn: 5310110293
displayName: somsak somsaknaja
userPassword: 123456
mail: 5310110293@example.com

dn: cn=5410110308,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5410110308
sn: 5410110308
givenName: somsri
cn: 5410110308
displayName: somsri somsrisiya
userPassword: 123456
mail: 5410110308@example.com

dn: cn=5410210081,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5410210081
sn: 5410210081
givenName: sompong
cn: 5410210081
displayName: sompong sompongnaya
userPassword: 123456
mail: 5410210081@example.com

dn: cn=5510210058,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5510210058
sn: 5510210058
givenName: somchai
cn: 5510210058
displayName: somchai somchaisiya
userPassword: 123456
mail: 5510210058@example.com

dn: cn=5210310095,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5210310095
sn: 5210310095
givenName: somchoke
cn: 5210310095
displayName: somchoke somchokenaja
userPassword: 123456
mail: 5210310095@example.com

dn: cn=5710310067,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5710310067
sn: 5710310067
givenName: somjit
cn: 5710310067
displayName: somjit somjitssiya
userPassword: 123456
mail: 5710310067@example.com

dn: cn=5511210020,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5511210020
sn: 5511210020
givenName: somjai
cn: 5511210020
displayName: somjai somjainaya
userPassword: 123456
mail: 5511210020@example.com

dn: cn=5611210004,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5611210004
sn: 5611210004
givenName: somwang
cn: 5611210004
displayName: somwang somwangsija
userPassword: 123456
mail: 5611210004@example.com


19.เพิ่มข้อมูลเข้า LDAP จากไฟล์

mama@ubuntu:~$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f create-students.ldif
[sudo] password for mama:
Enter LDAP Password:
adding new entry "ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5310110293,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5410110308,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5410210081,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5510210058,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5210310095,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5710310067,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5511210020,ou=students,ou=groups,dc=example,dc=com"

adding new entry "cn=5611210004,ou=students,ou=groups,dc=example,dc=com"


20.ทดสอบ ldapsearch หา uid=5611210004

mama@ubuntu:~$ ldapsearch -xLLL -b "dc=example,dc=com" uid=5611210004
output:
dn: cn=5611210004,ou=students,ou=groups,dc=example,dc=com
objectClass: inetOrgPerson
uid: 5611210004
sn: 5611210004
givenName: somwang
cn: 5611210004
displayName: somwang somwangsija
mail: 5611210004@example.com



[ถ้าต้องการสร้าง user เพิ่มอีกชื่อ juju ด้วยวิธี command line]

21.สร้างไฟล์ชื่อ juju.ldif และใส่ข้อมูลตามตัวอย่าง

mama@ubuntu:~$ vi juju.ldif
dn: cn=juju,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
uid: juju
sn: Ju
givenName: Ju
cn: juju
displayName: Ju Ju
userPassword: 123456
mail: juju@example.com


22.จากนั้นเพิ่มข้อมูลจากไฟล์ juju.ldif

mama@ubuntu:~$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f juju.ldif
Enter LDAP Password:
adding new entry "cn=juju,ou=people,dc=example,dc=com"


ติดตั้งโปรแกรม phpldapadmin เพื่อใช้จัดการทางหน้าเว็บ


23.ติดตั้งโปรแกรม

mama@ubuntu:~$ sudo apt-get install php-ldap
The following NEW packages will be installed:
  php-common php-ldap php7.0-common php7.0-ldap
Setting up php-ldap (1:7.0+35ubuntu6) ...

mama@ubuntu:~$ sudo apt-get install phpldapadmin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0
  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libxslt1.1 php-xml
  php7.0-cli php7.0-json php7.0-opcache php7.0-readline php7.0-xml
Setting up phpldapadmin (1.2.2-5.2ubuntu2) ...


24.สร้าง user จากหน้าเว็บ phpldapadmin ทำดังนี้
เปิดเข้าไปที่ http://ldap.example.com/phpldapadmin/
เมื่อ Login แล้วจะเห็นข้อมูลที่เพิ่มเข้าไปก่อนหน้านี้แล้ว
คลิกเลือก Create new entry here ใต้ OU= ที่เลือก เช่นตัวอย่างนี้ให้คลิกที่ ou=people
ถาม Select a template for the creation process เลือก ( )default
ถาม Step 1 of 2: Container and ObjectClass(es) เลือก inetOrgPerson แล้วคลิก Proceed
ถาม Step 2 of 2: Specify attributes and values ใส่ฟิลด์ที่ Required
ตัวเลือก RDN ให้เลือก cn
cn: jaja
sn: Ja
displayName: Ja Ja
Email: jaja@example.com
givenName: Ja
Password: 123456 และเลือกการเข้ารหัสแบบ md5 (หรือ clear สำหรับตัวอย่างที่เพิ่มทาง command line)
User Name: jaja
แล้วคลิก Create Object
ถาม Do you want to create this entry? คลิก Commit


[การ debug เมื่อ server เปิด port LDAP และ LDAPS]

ให้ใช้ tcpdump ที่ network interface เช่น eth0

25.คำสั่งสำหรับ debug port LDAP ดังนี้
mama@ubuntu:~$ sudo tcpdump -n -i eth0 port 389 -X
จะเห็นข้อมูลอ่านได้และรหัสผ่าน

26.คำสั่งสำหรับ debug port LDAPS ดังนี้
mama@ubuntu:~$ sudo tcpdump -n -i eth0 port 636 -X
จะไม่เห็นรหัสผ่านเพราะข้อมูลอ่านไม่รู้เรื่อง

ตัวอย่างการนำไปใช้งานกับ joomla


[ตัวอย่างการตั้งค่า joomla ใช้ user จาก LDAP server]

1.เข้าหน้าเว็บ administrator
ตัวอย่าง http://iserver.example.com/testjoomla/administrator/
2.เมนู Extensions > Plug-in Manager > Authentication - LDAP
3.ตั้งค่า Basic Options
เมื่อ server ที่ใช้นั้นเป็น OpenLDAP
Host: ldap.example.com
Port: 389
LDAP V3 [ ] No [/] Yes
Negotiate TLS: [/] No [] Yes
Follow Referrals: [/] No [] Yes
Authorisation Method: Bind and Search
Base DN: DC=example,DC=com
หรือแบบเจาะจงกลุ่มย่อย
แบบที่ 1 Base DN: OU=people,DC=example,DC=com
แบบที่ 2 Base DN: OU=groups,DC=example,DC=com
แบบที่ 3 Base DN: OU=execs,OU=groups,DC=example,DC=com
แบบที่ 4 Base DN: OU=staffs,OU=groups,DC=example,DC=com
Search String: uid=[search]
User's DN: ปล่อยว่าง
Connect Username: ปล่อยว่าง
Connect Password: ปล่อยว่าง
Map: Full Name: displayName
Map: email: mail
Map: User ID: uid


[ตัวอย่างการตั้งค่า joomla ใช้ user จาก LDAPS server]

1.เข้าหน้าเว็บ administrator
ตัวอย่าง http://iserver.example.com/testjoomla/administrator/
2.เมนู Extensions > Plug-in Manager > Authentication - LDAP
3.ตั้งค่า Basic Options
เมื่อ server ที่ใช้นั้นเป็น OpenLDAP
Host: ldaps://ldap.example.com
Port: 636
LDAP V3 [ ] No [/] Yes
Negotiate TLS: [/] No [] Yes
Follow Referrals: [/] No [] Yes
Authorisation Method: Bind and Search
Base DN: DC=example,DC=com
หรือแบบเจาะจงกลุ่มย่อย
แบบที่ 1 Base DN: OU=people,DC=example,DC=com
แบบที่ 2 Base DN: OU=groups,DC=example,DC=com
แบบที่ 3 Base DN: OU=execs,OU=groups,DC=example,DC=com
แบบที่ 4 Base DN: OU=staffs,OU=groups,DC=example,DC=com
Search String: uid=[search]
User's DN: ปล่อยว่าง
Connect Username: ปล่อยว่าง
Connect Password: ปล่อยว่าง
Map: Full Name: displayName
Map: email: mail
Map: User ID: uid


[References:]

LDAP
(1)http://www.unixmen.com/openldap-installation-configuration-ubuntu-12-1013-0413-10-debian-67-2/
(2)https://www.digitalocean.com/community/articles/how-to-install-and-configure-a-basic-ldap-server-on-an-ubuntu-12-04-vps

LDAPS
(1)http://rogermoffatt.com/2011/08/24/ubuntu-openldap-with-ssltls/
(2)https://www.google.co.th/?gws_rd=cr&ei=5Y1HU-3rO8iF8gW6zYCYAw#q=slapd.d+configuration
(3)http://www.zytrax.com/books/ldap/ch6/#tls-overview


[หากพบ Bug ของ phpLdapAdmin ใน php 5.5]

กรณีที่พบ bug อันเนื่องมาจากการอัปเดต php จากเดิมใน ubuntu 12.04 ไปเป็น php 5.5 ใน ubuntu 14.04
เมื่อสร้าง user ผ่านหน้าเว็บ phpLdapAdmin, คุณอาจพบข้อความ error แบบนี้ใกล้ ๆ กับฟิลด์ password
"Error trying to get a non-existant value (appearance,password_hash)"
แก้ไขตามคำแนะนำจากเว็บนี้
https://lamlos.com/2014/08/24/phpldapadmin-password-error-with-php-5/
ที่บรรทัด 2469 ของไฟล์ /usr/share/phpldapadmin/lib/TemplateRender.php เปลี่ยนจาก
$default = $this->getServer()->getValue('appearance','password_hash');
เป็น
$default = $this->getServer()->getValue('appearance','password_hash_custom');

ได้รับการแก้ไขใน phpLdapAdmin เวอร์ชั่นล่าสุดแล้ว

[หากพบ Bug ของ phpLdapAdmin ใน php 7.2]

กรณีที่พบ bug อันเนื่องมาจากการอัปเดต php จากเดิมใน ubuntu 16.04 ไปเป็น php 7.2 ใน ubuntu 18.04
หน้าเว็บ phpLdapAdmin จะมีข้อความ

Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /usr/share/phpldapadmin/lib/functions.php on line 54
Deprecated: Function create_function() is deprecated in /usr/share/phpldapadmin/lib/functions.php on line 1083

แก้ไขตามคำแนะนำจากเว็บนี้
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=890127