`
stenlylee
  • 浏览: 260169 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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),然后移动到建好的文件夹中。它应该包含下面这些东西:

创建过程将持续一小会,这中间包含了很多步骤。首先,我们需要运行配置脚本——默认情况下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和密码改成你自己的)然后实体就被添加进去了

分享到:
评论

相关推荐

    Seam-无缝集成JSF

    2. **RESTful URL支持**:Seam支持生成符合RESTful原则的URL,使得应用更加易于理解和维护,同时也方便了与其他系统的集成。 3. **Ajax远程调用**:Seam内置了对Ajax的支持,简化了异步通信的实现过程,提升了用户...

    Jboss seam 一个深度集成框架

    - **统一的组件模型**:与 Spring 不同的是,Seam 为所有被集成的框架提供了一个统一的组件模型。这意味着开发者可以使用统一的 Seam 组件,而无需学习每个单独框架的组件管理 API。 - **先进的功能支持**:Seam ...

    Seam - 无缝集成 JSF

    而 Seam 是一个扩展 JSF 的强大的应用程序框架。在这个由三部分组成的新系列中的第一篇文章中,发现这两种框架之间的互补性。Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax...

    examples, 演示两个或者更多Seam模块的集成示例.zip

    examples, 演示两个或者更多Seam模块的集成示例 Seam 3集成示例集成了面向对象的Seam示例,演示了多个模块提供的功能。安全示例authorizationidmconsoleopenid-opopenid-rpsimple运行功能测试设置 JBOSS_HOM

    JBOSS SEAM组件中文手册

    1. **JSF集成**: Seam与JSF的紧密结合,使得UI层的开发更为简便,通过Seam可以直接在JSF页面上操作后端数据。 2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务控制。 3. **EJB 3集成**: ...

    jboss seam 教程

    #### 一、Seam简介与教程概览 - **Seam**:一个基于Java EE平台的应用框架,旨在简化企业级应用开发。 - **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web...

    seam in action 中文 english

    3. **JSF集成**:Seam与JavaServer Faces紧密集成,提供了一种优雅的方式来进行用户界面的开发。它增强了JSF的功能,例如自动管理请求上下文、页面导航和转换验证等。 4. **EJB集成**:Seam与EJB 3.0无缝集成,允许...

    jboss-seam2.0文档

    Seam 2.0与JSF紧密集成,提供了组件扩展和增强,如Seam Faces,增强了JSF的表单处理和导航能力。 2.2 EJB(Enterprise JavaBeans)支持 Seam 2.0通过其EJB容器,让开发者可以方便地创建和管理EJB组件,同时支持EJB ...

    为Seam做好准备

    Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他组件统一在一个简化开发的环境中。这篇博客的链接虽然无法直接访问,但我们可以...

    jboss seam

    这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...

    Seam_in_Action

    8. **企业服务集成**:Seam能够轻松地与Java EE的其他组件如EJB、JMS、JMX等集成,为开发者提供了一个统一的平台来利用各种企业服务。 9. **测试与调试**:Seam提供了全面的测试支持,包括单元测试和集成测试,以及...

    Seam框架文档简述

    除了JBPM(一个用于业务流程管理的工具)之外,Seam还支持与其他常用的工具和组件如Spring、邮件发送、权限管理等进行集成,从而增强应用的功能。 #### 三、Seam框架的功能与特点 ##### 1. 一站式(FullStack)的...

    jboss seam 学习资料,seam in action和官方手册

    3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何与Enterprise JavaBeans和Contexts and Dependency Injection (CDI)框架协作。 5. **持久化...

    MATLAB_Seam_Carving_seamcarving_

    MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...

    Configuring Seam and packaging Seam applications

    Seam与JSF的集成是其核心功能之一。这涉及到在web.xml文件中配置Seam Filter和Seam Listener,以便处理JSF请求生命周期中的事件,并确保Seam组件与JSF页面正确交互。 #### 1.1.2. 使用Facelets Facelets是JSF推荐...

    Seam in Action

    首先,Seam框架在Java EE平台的基础上构建,它通过集成JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)和CDI(Contexts and Dependency Injection)等技术,为开发者提供了一个...

    Jboss Seam 三本最受欢迎的教材

    这本书深入浅出地介绍了如何使用Seam进行实际项目开发,涵盖了Seam的核心概念、组件模型、事件驱动机制、持久化处理以及与富客户端框架如RichFaces的集成等内容。通过这本书,读者可以全面理解Seam框架的精髓,提升...

    Seam_2.0_Reference_zh_CN

    3. **JSF集成**:Seam与JavaServer Faces的深度集成提供了强大的视图层支持。它扩展了JSF,允许开发者使用EL表达式在后台数据和用户界面之间直接交互,同时支持AJAX功能,增强用户体验。 4. **EJB集成**:Seam简化...

Global site tag (gtag.js) - Google Analytics