原文地址: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),然后移动到建好的文件夹中。它应该包含下面这些东西:
创建过程将持续一小会,这中间包含了很多步骤。首先,我们需要运行配置脚本——默认情况下OpenLDAP会安装在/usr/local目录下。我们这里建议就使用默认的路径。在OpenLDAP的源代码目录下执行'./configure'来开始配置脚本:
之后,就应该全部完成了:
下一步运行'make depend':
这样我们就全部完成了:
下一步,运行'make':
最后,运行'make install':
最后一步,安装所有的OpenLDAP文件到正确的路径下面。然后,我们可以到/usr/local路径下面查看我们刚刚安装的:
当我们开始OpenLDAP服务之前,我们需要更改一些配置。首先我们需要编辑OpenLDAP配置文件,它存储在/usr/local/etc/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'来设置这个文件为可读写
翻到最后,找到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),我保证它看起来会非常有趣。
最后,修改过的文件看起来会是这样:
接下来,翻到下面,找到'person'的'objectclass'。然后你需要添加'roles'和'enabled'属性到其MAY属性的列表中:
保存后,在/usr/local/libexec目录下输入slapd,启动OpenLDAP服务。
slapd服务在后台自动运行。我们可以输入ps命令来确认它是否正常运行:
当我们使用我们自己的路径之前,我们需要建立几个实体。再次打开你的编辑器,在你的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和密码改成你自己的)然后实体就被添加进去了
分享到:
相关推荐
2. **RESTful URL支持**:Seam支持生成符合RESTful原则的URL,使得应用更加易于理解和维护,同时也方便了与其他系统的集成。 3. **Ajax远程调用**:Seam内置了对Ajax的支持,简化了异步通信的实现过程,提升了用户...
- **统一的组件模型**:与 Spring 不同的是,Seam 为所有被集成的框架提供了一个统一的组件模型。这意味着开发者可以使用统一的 Seam 组件,而无需学习每个单独框架的组件管理 API。 - **先进的功能支持**:Seam ...
而 Seam 是一个扩展 JSF 的强大的应用程序框架。在这个由三部分组成的新系列中的第一篇文章中,发现这两种框架之间的互补性。Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax...
examples, 演示两个或者更多Seam模块的集成示例 Seam 3集成示例集成了面向对象的Seam示例,演示了多个模块提供的功能。安全示例authorizationidmconsoleopenid-opopenid-rpsimple运行功能测试设置 JBOSS_HOM
1. **JSF集成**: Seam与JSF的紧密结合,使得UI层的开发更为简便,通过Seam可以直接在JSF页面上操作后端数据。 2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务控制。 3. **EJB 3集成**: ...
#### 一、Seam简介与教程概览 - **Seam**:一个基于Java EE平台的应用框架,旨在简化企业级应用开发。 - **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web...
3. **JSF集成**:Seam与JavaServer Faces紧密集成,提供了一种优雅的方式来进行用户界面的开发。它增强了JSF的功能,例如自动管理请求上下文、页面导航和转换验证等。 4. **EJB集成**:Seam与EJB 3.0无缝集成,允许...
Seam 2.0与JSF紧密集成,提供了组件扩展和增强,如Seam Faces,增强了JSF的表单处理和导航能力。 2.2 EJB(Enterprise JavaBeans)支持 Seam 2.0通过其EJB容器,让开发者可以方便地创建和管理EJB组件,同时支持EJB ...
Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他组件统一在一个简化开发的环境中。这篇博客的链接虽然无法直接访问,但我们可以...
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...
8. **企业服务集成**:Seam能够轻松地与Java EE的其他组件如EJB、JMS、JMX等集成,为开发者提供了一个统一的平台来利用各种企业服务。 9. **测试与调试**:Seam提供了全面的测试支持,包括单元测试和集成测试,以及...
除了JBPM(一个用于业务流程管理的工具)之外,Seam还支持与其他常用的工具和组件如Spring、邮件发送、权限管理等进行集成,从而增强应用的功能。 #### 三、Seam框架的功能与特点 ##### 1. 一站式(FullStack)的...
3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何与Enterprise JavaBeans和Contexts and Dependency Injection (CDI)框架协作。 5. **持久化...
MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...
Seam与JSF的集成是其核心功能之一。这涉及到在web.xml文件中配置Seam Filter和Seam Listener,以便处理JSF请求生命周期中的事件,并确保Seam组件与JSF页面正确交互。 #### 1.1.2. 使用Facelets Facelets是JSF推荐...
首先,Seam框架在Java EE平台的基础上构建,它通过集成JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)和CDI(Contexts and Dependency Injection)等技术,为开发者提供了一个...
这本书深入浅出地介绍了如何使用Seam进行实际项目开发,涵盖了Seam的核心概念、组件模型、事件驱动机制、持久化处理以及与富客户端框架如RichFaces的集成等内容。通过这本书,读者可以全面理解Seam框架的精髓,提升...
3. **JSF集成**:Seam与JavaServer Faces的深度集成提供了强大的视图层支持。它扩展了JSF,允许开发者使用EL表达式在后台数据和用户界面之间直接交互,同时支持AJAX功能,增强用户体验。 4. **EJB集成**:Seam简化...
Seam不仅仅是一个集成框架,它还提供了自己的状态管理机制,通过注解和EL表达式实现与其他框架的深度整合。Seam对ORM(对象关系映射)的支持尤为突出,尤其是在处理持久化上下文的生命周期中,避免了ORM常见的问题,...