Phần cuối cùng của chương này trình bày cách để thay thế việc xác thực đơn giản bằng cơ chế SASL. Ta sẽ sử dụng cơ chế GSSAPI cho việc xác thực Kerberos 5. Các ví dụ sau đây giả sử rằng một Kerberos realm tên PLAINJOE.ORG đã được thành lập và ldapadmin đã được tạo ra. Cho đến nay, các giá trị rootdn và rootpw sử dụng trong slapd.conf như sau:
rootdn "cn=Manager,dc=plainjoe,dc=org"
rootpw {SSHA}2aksIaicAvwc+DhCrXUFlhgWsbBJPLxy
Một ID SASL được chuyển đổi sang DN như sau:
uid=name[,realm=realm],cn=mechanism,cn=auth
Để minh họa cách dùng SASL như một cơ chế xác thực, ta sẽ thay thế rootdn trong server master slapd.conf bằng ldapadmin. Rootdn mới trong slapd.conf là:
## New SASL-based rootdn
rootdn "uid=ldapadmin,cn=gssapi,cn=auth"
rootpw có thể xóa được, vì việc xác thực bằng cách dùng rootdn mới có thể hoàn thành bằng cách dùng cơ chế SASL GSSAPI. Server OpenLDAP phải có một file keytab chứa các key để giải mã các tickets được truyền với các yêu cầu khách hàng. Các bài test sẽ giả sử rằng server được cấu hình để sử dụng realm mặc định của PLAINJOE.ORG.
Để thực hiện kiểm tra, ta tạo file với mục LDIF, sử dụng mục LDIF sau:
## Test user to verify that the new rootdn is OK. dn: cn=test user,ou=people,dc=plainjoe,dc=org cn: test user
sn: test
objectclass: person
Để thêm các mục này vào thư mục, gọi hàm ldapadd và thêm các dòng sau:
$ kinit ldapadmin@PLAINJOE.ORG
Password for ldapadmin@PLAINJOE.ORG: password
$ klist
Ticket cache: FILE:/tmp/krb5cc_780
Default principal: ldapadmin@PLAINJOE.ORG
Valid starting Expires Service principal
11/28/02 19:20:15 11/29/02 05:20:15 krbtgt/PLAINJOE.ORG@PLAINJOE.ORG
$ ldapmodify -a -H ldap://master.plainjoe.org/ \ > -f testuser.ldif
SASL/GSSAPI authentication started
SASL username: ldapadmin@PLAINJOE.ORG SASL SSF: 56
SASL installing layers
$ klist
Ticket cache: FILE:/tmp/krb5cc_780
Default principal: ldapadmin@PLAINJOE.ORG
Valid starting Expires Service principal
11/28/02 19:20:15 11/29/02 05:20:15 krbtgt/PLAINJOE.ORG@PLAINJOE.ORG 11/28/02 19:23:34 11/29/02 05:20:15 ldap/garion.plainjoe.org@PLAINJOE.ORG
Việc xác thực sẽ fail nếu server không hỗ trợ cơ chế GSSAPI. Lúc đó, ta nên dùng lựa chọn –Y
để chỉ định cơ chế xác thực SASL.
Sau khi đã quen với SASL dùng IDs, ta có thể kết hợp chúng vào ACLs, được định nghĩa trong
slapd.conf. SASL IDs có thể nằm sau từ khóa by trong định nghĩa ACL. Ví dụ, định nghĩa sau
cho phép JERRY được chỉnh thuộc tính mail của tất cả các user trong ou people.
access to dn=".*,ou=people,dc=plainjoe,dc=org" attrs=mail by "uid=jerry,cn=gssapi,cn=auth" write