Seam与OpenLDAP的集成(一)

原文地址:http://shane.bryzak.com/blog/articles/integrating_seam_and_openldap

图片可以见:http://hi.baidu.com/stenlylee/blog/item/6901aec3b3fb9053b219a86d.html

简介

JBoss Seam 2.1.0中的一个新特性就是权限管理——Seam应用程序提供的用于管理用户与角色的标准接口。这套接口能让你在你的Seam程序界面中调用后台存储的权限(安全)设置。 无论你将用户数据存储在数据库中还是LDAP路径下,Seam都支持直接调用验证。 这篇文章主要关注LDAP方式:介绍OpenLDAP的安装和配置,以及进一步描述通过什么样的配置,就能让Seam程序访问指定的路径。

先决条件

你需要先准备好:

1、Java 1.5 JDK或更高版本
2、一个应用程序服务器,例如JBoss AS(如何安装不再本文讨论范围内)
3、Apache Ant

这里我们用来讨论的内容将通过seamspace示例来展现。这个例子已经被包含在了seam的examples文件夹下。它支持多用户角色,并且用户可以通过权限管理页面来管理它们。这些内容都很好地展示了如何与OpenLDAP集成。

在写这篇文章的同时,OpenLDAP的最新版本为2.4.11,可以到http://www.openldap.org下载。我们将会用OpenLDAP的源代码来创建OpenLDAP,所以我假设你们已经可以运行一些*nix特性。如果你使用的是windows,你可以试试Cygwin,从这里下载:http://www.cygwin.com(实际上,这篇文章就是用Cygwin写的)

*Cygwin,在windows下面模拟linux环境的程序,译者注

安装OpenLDAP

现在我们赶快开始吧。第一步要做的就是,解压缩源代码压缩包(输入命令:tar zxvf openldap-2.4.11.tgz),然后移动到建好的文件夹中。它应该包含下面这些东西:

Seam与OpenLDAP的集成(一)

创建过程将持续一小会,这中间包含了很多步骤。首先,我们需要运行配置脚本——默认情况下OpenLDAP会安装在/usr/local目录下。我们这里建议就使用默认的路径。在OpenLDAP的源代码目录下执行'./configure'来开始配置脚本:

Seam与OpenLDAP的集成(一)

之后,就应该全部完成了:

Seam与OpenLDAP的集成(一)

下一步运行'make depend':

Seam与OpenLDAP的集成(一)

这样我们就全部完成了:

Seam与OpenLDAP的集成(一)

下一步,运行'make':

Seam与OpenLDAP的集成(一)

最后,运行'make install':

Seam与OpenLDAP的集成(一)

最后一步,安装所有的OpenLDAP文件到正确的路径下面。然后,我们可以到/usr/local路径下面查看我们刚刚安装的:

Seam与OpenLDAP的集成(一)

当我们开始OpenLDAP服务之前,我们需要更改一些配置。首先我们需要编辑OpenLDAP配置文件,它存储在/usr/local/etc/openldap路径下面:

Seam与OpenLDAP的集成(一)

使用你最常用的文本编辑器打开slapd.conf,然后项下滚动到文件的底部。最后一个选项包含了一些参数我们需要针对实际环境去修改。最前面两个,suffix和rootdn要改成你的目录服务所运行的domain。例如,我将domain改成了'dc=bryzak,dc=com'。'dc'在这里表示'Domain Component'。

rootdn设置包含了根用户名称(DN),该用户能够读写该路径下的所有东西。你可以通过修改rootpw参数来修改根用户的密码(默认为secret)。

当我们保存修改过的配置文件后,我们需要对LDAP的schema做一些修改。这个步骤可能会产生一些不太好的效果,但是这些修改都非常简单。这里需要修改两个部分,首先是添加一个role属性到你的Person对象中,这样才能让权限管理接口知道用户是属于哪个角色的。然后我们需要给Person对象添加一个enabled属性,这样才能对用户是否有效进行控制。实际上,enabled是可选的,我们的例子里面会用到它。

我们通过修改/usr/local/etc/openldap/schema/core.schema文件来修改核心的schema。(你可能需要先运行'chmod 644 core.schema'来设置这个文件为可读写

Seam与OpenLDAP的集成(一)

翻到最后,找到attributetype实体,然后创建两个新的实体,roles和enabled。然后你会看到如下部分:

attributetype ( 2.5.4.66 NAME 'roles'
DESC 'role memberships of a person'
SUP name )

attributetype ( 2.5.4.67 NAME 'enabled'
DESC 'enabled flag for a person'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )

SYNTAX后面跟着的这一长串数字看起来让人恐怖,但它仅仅是boolean类型的标准LDAP类型。如果你对其他LDAP属性感兴趣,你可以参考RFC2252 (http://tools.ietf.org/html/rfc2252),我保证它看起来会非常有趣。

最后,修改过的文件看起来会是这样:

Seam与OpenLDAP的集成(一)

接下来,翻到下面,找到'person'的'objectclass'。然后你需要添加'roles'和'enabled'属性到其MAY属性的列表中:

Seam与OpenLDAP的集成(一)

保存后,在/usr/local/libexec目录下输入slapd,启动OpenLDAP服务。

Seam与OpenLDAP的集成(一)

slapd服务在后台自动运行。我们可以输入ps命令来确认它是否正常运行:

Seam与OpenLDAP的集成(一)

当我们使用我们自己的路径之前,我们需要建立几个实体。再次打开你的编辑器,在你的home路径下新建一些叫做entries.ldif的文件文件,文件内容包括:

dn: dc=bryzak,dc=com
objectClass: dcObject
objectClass: organization
dc: bryzak
o: Example
description: Example

dn: cn=Manager,dc=bryzak,dc=com
objectClass:organizationalRole
cn: Manager
description: Directory Manager

确保你的dc值对应你自己的domain。保存文件,然后我们可以使用ldapadd来添加实体。执行 '/usr/local/bin/ldapadd -D cn=Manager,dc=bryzak,dc=com -w secret -f entries.ldif' (将绑定的dn和密码改成你自己的)然后实体就被添加进去了

Seam与OpenLDAP的集成(一)

你可能感兴趣的:(应用服务器,linux,jboss,配置管理,seam)