[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 成功就算是配置正确。
相关文章
相关标签/搜索