Seam与OpenLDAP的集成(一)

本文介绍了如何在JBoss Seam 2.1.0中利用权限管理特性与OpenLDAP集成,实现用户认证与授权。文章详细说明了OpenLDAP的安装与配置流程,包括配置文件的修改、核心模式的调整等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: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和密码改成你自己的)然后实体就被添加进去了

identity 身份认证 购VIP最低享 7 折! triangle vip 30元优惠券将在58:6:9后过期 去使用 triangle QT+Poppler+PDFviewer.zip 是个用于在Windows操作系统下,使用QT5框架结合Poppler库开发PDF阅读器的项目。这个项目的核心是利用Poppler库解析PDF文档,并通过QT5进行用户界面的设计和交互。以下将详细介绍相关知识点: 1. **QT5框架**:QT(Qt)是个跨平台的应用程序开发框架,支持多种操作系统,如Windows、Linux、macOS等。它提供了丰富的库函数和组件,使得开发者可以方便地构建图形用户界面(GUI)应用程序。QT5是QT的第五个主要版本,引入了许多新特性和改进,如QML(Qt Meta Object Language)用于声明式UI设计,以及更好的性能和API优化。 2. **Poppler库**:Poppler是个开源的PDF文档处理库,源自Xpdf项目,主要用于PDF文件的解析、渲染和提取文本。Poppler提供了C++接口,使得开发者能够方便地在应用程序中集成PDF阅读和处理功能。它可以读取PDF文件,显示页面,提取文本和元数据,甚至支持对PDF文件进行注释和修改(但本项目可能仅涉及阅读功能)。 3. **PDF viewer的实现**:在本项目中,PDF viewer是基于QT5 GUI组件构建的,它利用Poppler库来加载和解析PDF文档。`mainwindow.cpp`和`mainwindow.h`包含了主窗口类的定义和实现,这是用户应用程序交互的主要界面。`pdfcanvas.cpp`和`pdfcanvas.h`则可能包含了用于显示PDF页面的自定义画布类,该类使用Poppler库来渲染PDF页面到QT的画布上。 4. **项目构建编译**:`newtime.pro`是QT项目的配置文件,用于指定项目依赖的库(如Poppler)、源代码文件、编译选项等。`.pro.user`文件则保存了用户的特定编译设置,如编译器路径或调试选项。开发者需要使用QT的qmake工具或直接在IDE如Qt Creator中打开此项目,进行编译和链接,确保所有依赖库都正确安装并链接。 5. **文件操作**:`main.cpp`通常是程序的入口点,负责初始化QT应用环境并运行主循环。在PDF viewer中,可能会在`main.cpp`中实例化主窗口,并调用Poppler库的相关函数来加载PDF文件。 6. **使用流程**:用户可以通过QT界面选择PDF文件,然后通过Poppler库读取文件内容,将页面渲染到QT的控件上。用户可以通过滚动、缩放等操作查看PDF内容。 Poppler库的强大功能使得PDF viewer可以支持多页显示、文本搜索、书签管理等高级特性。 7. **优化扩展**:为了提升用户体验,开发者可能会对PDF viewer进行各种优化,比如添加平滑滚动、快速查找、页面预加载等功能。此外,还可以考虑支持批注、打印、PDF转换等更复杂的操作,以增强软件的功能性和实用性。 QT+Poppler+PDFviewer.zip项目提供了个基础的PDF阅读器实现,开发者可以在此基础上进步定制和扩展,以满足特定的PDF处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值