[Liferay] Liferay 實現單點登陸 - OpenLDAP

Liferay 的單點登陸絕對是個難啃的骨頭,更況且網上能搜到的基本都是些濫竽充數的文章,很不負責任。html

因而在本身搭通單點登陸一條線以後,決定整理下思路並寫出來,但願各位能別重蹈覆轍。linux


本文不介紹概念。僅僅注重實現數據庫


軟件版本號:apache

Liferay : 6.1.1 CE GA2
OpenLdap for Windows :openldap-2.4.38-x86
Apache Directory Studio : Apache Directory Studio 2.0.0-M3
CAS : cas-server-3.5.2
Windows : 7 x64


第一篇 OpenLDAP


再也不講述 LDAP 概念,僅僅需知道 OpenLDAP 是 LDAP 協議的幾個主流實現之中的一個,重點是介紹怎樣在 windows 平臺上安裝和配置 OpenLDAP。windows


下載

openLDAP官方站點:http://www.openldap.org/
openLDAP官網僅僅提供了linux平臺的相關安裝文件,windows平臺的安裝包可以到下面一些站點下載:
http://www.userbooster.de/download/openldap-for-windows.aspx
http://sourceforge.jp/projects/openldapwin32/releases/
http://sourceforge.net/projects/openldapwindows/files/
app

http://sourceforge.net/projects/openldapwindows/(本文所用的版本號)

以上四個地址中第一個安裝完畢以後 LDAP server 啓動老是異常,並無詳細分析緣由,直接卸載安裝最後一個連接中的版本號,好使。

安裝



一路點擊 next 就能夠,注意默認的 backend engine 爲 BDB,意思也就是 LDAP 使用 BDB 存儲數據,可以依據需求自行配置如 SQL Server 等。
安裝完畢以後找到安裝路徑下的E:\OpenLDAP\etc\openldap。打開slapd.conf,替換整個內容爲


include   ../etc/openldap/schema/core.schema
include   ../etc/openldap/schema/cosine.schema
include   ../etc/openldap/schema/inetorgperson.schema

pidfile ../var/run/slapd.pid

loglevel  -1

moduleload back_bdb.la

database bdb
suffix "dc=example, dc=com"

rootdn "cn=jimbob, dc=example, dc=com"
rootpw dirtysecret

directory       ../var/openldap-data

# Indices to maintain for this directory
# unique id so equality match only
index uid eq
# allows general searching on commonname, givenname and email
index cn,gn,mail eq,sub
# allows multiple variants on surname searching
index sn eq,sub
# sub above includes subintial,subany,subfinal
# optimise department searches
index ou eq
# if searches will include objectClass uncomment following
# index objectClass eq
# shows use of default index parameter
index default eq,sub
# indices missing - uses default eq,sub
index telephonenumber

# other database parameters
# read more in slapd.conf reference section
cachesize 10000
checkpoint 128 15

當中

suffix "dc=example, dc=com"
可以理解爲整個 LDAP 的跟文件夾地址。可以自行配置
rootdn "cn=jimbob, dc=example, dc=com" rootpw dirtysecret
管理員用戶的 DN 以及password,可以自行配置
directory       ../var/openldap-data
LDAP 數據庫文件夾

至於其它參數我臨時也不關心是什麼意思。

啓動 LDAP server

這個安裝版本號中。不需要經過命令行啓動,開始菜單裏找到 OpenLDAP。並啓動ide




看到例如如下內容就算是啓動成功了



通常教程到這裏都會提示需要新建個 .ldif 文件,用來加入用戶或者組織,事實上剛開始大可沒必要糾結於這個文件以及裏面的語法。因爲全然可以使用 LDAP 可視化工具完畢相同的工做。工具

但畢竟寫文檔。這部分仍是得寫。ui

LDIF 文件

DIT 結構 – 例如如下圖,可以理解爲LDAP 的結構文件夾,就比方 Java Web應用的文件夾。this




在E:\OpenLDAP 文件夾建立demo.ldif 文件。粘貼下面的 內容,用來建立 DIT 結構。並加入用戶

dn: dc=example,dc=com
dc: example
description: text whatever you want for description
objectClass: dcObject
objectClass: organization
o: Example, Inc.

dn: ou=people, dc=example,dc=com
ou: people
description: All people in organisation
objectclass: organizationalunit

dn: cn=Robert Smith,ou=people,dc=example,dc=com
objectclass: inetOrgPerson
cn: Robert Smith
sn: smith
uid: rjsmith
userpassword: rJsmitH
mail: rsmith@example.com
description: swell guy
ou: Human Resources

在E:\OpenLDAP\bin文件夾下輸入下面指令用來導入 LDIF 文件。爲何要到這個文件夾。因爲這個文件夾底下有ldapadd.exe,否則使用 ldapadd 指令會提示提示:’ldapadd’ 不是內部或外部命令。也不是可執行的程序或批處理文件

ldapadd -x -D "cn=jimbob,dc=example,dc=com" -f ./mydemo.ldif -w dirtysecret

接下來經過下面search 指令確認是否導入成功

ldapsearch -x -b "dc=example,dc=com" "(objectclass=*)"

LDAP client Apache Directory Studio

LDAP 有多種client,本文使用的是Apache Directory Studio,沒什麼特別緣由,就是認爲 Apache 相對照較親切一點。
下載地址 :http://directory.apache.org/studio/downloads.html
下載最新版的就能夠。

安裝以及配置步驟可以參考官方文檔https://directory.apache.org/studio/users-guide/ldap_browser/gettingstarted_download_install.html
左下 Connection 區域點擊右鍵加入 Connection。


注意 OpenLdap 的 Port 爲 389。




Bind DN or User :slapd.conf 文件內的rootdn
Bind password : slapd.conf 文件內的rootpw
點解 Check Authentication 確認驗證成功




以後點擊 Finish,配置成功。可以在左側 LDAPBrowser 裏看到整個 DIT 結構。



Liferay 配置 LDAP

在 Liferay 的 Crontrol Panel 找到 LDAP 配置界面,點擊加入 LDAP Server。
Server Name – 沒什麼可說的
Default Values – 僅僅有當你想切換 LDAP 工具時。依據詳細的 LDAP 實現工具來重置底下所有屬性
Connection : 配置用來鏈接 LDAP server




Users

User Mapping – 用來映射 LDAP 內 user 屬性與 Liferay 內user屬性




Groups – 相應於  LDAP 裏的 group



Export – 這個必須配置,否則沒法將 Liferay 用戶處處到 LDAP server,致使配置完畢以後, Liferay 用戶反而不能成功登陸




保存,回到LDAP主界面,確認選擇 Enabled 與 Required, Liferay 官方對這兩個屬性解釋例如如下:
ldap.auth.enabled=true
Set ldap.auth.enabled = true to enable LDAP Authentication

ldap.auth.required=true
Setting required = true means that you must successfully bind with the record in the LDAP server before Liferay will allow the user to log in

確認選擇 Import / Export




Liferay 官方解釋例如如下:
ldap.import.enabled=true
If set to true, then Liferay will do a mass import of users on the specified interval

ldap.import.on.startup=true
If set to true, Liferay will do a mass import of all LDAP users according to the import method (that match the user specified search filter) on startup


ldap.export.enabled=true
If set to true, Liferay will export the user to LDAP. Liferay uses a listener to track any changes made to the User object and will push these changes out to the LDAP server whenever the User object is updated. Note that on every login, fields such as "LastLoginDate" are updated and so if export is enabled, logging in with a user will export the user to LDAP.


上述步驟僅僅是單點登陸的準備工做而已。僅僅要能在 Liferay 配置 LDAP 界面 Test 成功就算是配置正確。
相關文章
相關標籤/搜索