介绍
本文档详细介绍了如何配置您的的Openfire安装,使用外部如Open LDAP或Active Directory目录。集成之后,可以让用户使用目录的用户名和密码进行身份验证。或者,您可以配置的Openfire的目录加载用户配置文件和组信息。 Openfire的任何一组被指定为共享的,这意味着你可以预先使用目录组填充用户的名册。
背景
LDAP(轻量级目录访问协议)已经成为一个占主导地位的标准用户身份验证和存储用户配置文件数据。它作为一个强大的工具,为大型组织(或这些组织将许多应用程序),以简化用户的管理问题。许多LDAP服务器可供选择:如Open LDAP,Active Directory和Novell的eDirectory。
默认情况下,Openfire的在其数据库中存储所有的用户数据和使用数据库查询且执行身份验证。 LDAP模块取代此功能,使Openfire能做到:
- 使用LDAP服务器来验证用户的身份。
- 从一个LDAP目录加载用户配置文件信息
- 从一个LDAP目录加载组信息。
注:Openfire的处理LDAP目录只能为只读方式。
本文档将指导您完成配置LDAP支持Openfire。这些说明假定你是一个称职的LDAP用户和你熟悉的Openfire安装问题。
配置
The Openfire setup tool includes an easy to use LDAP setup wizard. Choose the LDAP option on the Profile Settings page to configure directory integration.The wizard along with in-line help will guide you through
Openfire的设置工具包括一个易于使用的LDAP设置向导。在配置文件设置页选择LDAP选项来配置目录整合。随着在线帮助向导将指导您完成
其余部分。使用Active Directory的具体提示如下所述。
如果您已经完成了安装过程,但需要启用LDAP集成,可以重新运行安装工具。要做到这一点:
- 停止Openfire
- 在您的Openfire安装文件夹编辑 conf/openfire.xml设置 <setup>true</setup> to <setup>false</setup>.
- 重新启动Openfire的进入设置工具.
使用Active Directory
微软的Active Directory是一个广泛部署的目录系统,支持LDAP协议。,当您连接到Active Directory服务器时,系统会提示几个LDAP领域,下面详细介绍其中的一些:
基本DN
基本DN加载用户和组。如果你使用的是默认的Active Directory设置,所有用户帐户和组位于您域名的“Users”文件夹下。在LDAP形式,这是cn=Users;dc=<Your Domain>。为了得到更具体的说明,您的域 activedirectory.jivesoftware.com。在这种情况下,你的base DN cn=Users;dc=activedirectory,dc=jivesoftware,dc=com. 的。如果你自定义用户存储,你只需要使用LDAP语法复制该文件夹结构。
默认情况下,Active Directory不会允许匿名LDAP连接。因此,您将需要输入一个合法的用户连接到服务器,并读取所有的用户和组数据的DN。除非你已经创建了一个特殊的用户帐户用于此目的,一个简单的选择是使用内置的管理员帐户。默认情况下,管理员DN的形式 cn=Administrator,dc=<Your Domain>. 。使用我们前面的
例如,cn=Administrator,cn=users,dc=activedirectory,dc=jivesoftware,dc=com.
手动编辑配置文件
如果你喜欢直接编辑配置文件来启用LDAP集成,使用下面的指令。用你你最喜欢的编辑器打开配置文件conf/openfire.xml,添加或更改以下设置。 (
)标记的属性必须被设置。 (*)标记的属性必须设置,以便支持LDAP组,所有其他属性是可选的:
主要选项
- provider.user.className * -- 设置为 "org.jivesoftware.openfire.ldap.LdapUserProvider".
- provider.auth.className * -- 设置为"org.jivesoftware.openfire.ldap.LdapAuthProvider".
- ldap.host * -- LDAP服务器主机,如localhost或machine.example.com等,可以使用许多LDAP服务器,但所有的人都应该共享相同的配置(如SSL,基本DN,管理员帐户,等)。要指定多个LDAP服务器使用逗号或空格字符作为分隔符。
- ldap.port -- LDAP服务器端口.可以不用设置 ,默认的端口是389
- ldap.readTimeout -- 此属性的值是一个整数,代表读超时时间(以毫秒为单位)为LDAP操作的字符串表示形式。如果LDAP供应商没有得到一个LDAP响应在指定时间内,它将中止读取尝试。应该是大于零的整数。没有读指定超时值相当于响应无限等待,直到它被接收的原始行为,默认值为小于或等于零的整数。需要Java 1.6或更高版本。
- ldap.baseDN * -- 搜索用户的起始DN进行。将要搜索的用户帐户下的整个子树的基DN。
- ldap.alternateBaseDN --第二目录中DN的可以任选地设置。如果设置,则备用基DN将被用来进行身份验证,单用户加载和显示用户的列表。的基础DN和备用DN的内容将被视为1。
- ldap.adminDN -- 目录管理员的DN。与此帐户的所有目录操作都将被执行。管理员必须能够执行搜索和加载用户的记录。用户不需要可以进行更改到目录,作为的Openfire对待的目录为只读。如果这个属性没有设置,将尝试匿名登录到服务器。
- ldap.adminPassword -- 目录管理员密码
- ldap.usernameField -- 用户名是进行查找的字段名。如果这个属性没有设置,默认值为uid。 Active Directory用户应尽量的默认valuesAMAccountName。
- ldap.nameField -- 保存用户的名称的字段名称。如果这个属性没有设置,默认值是cn。 Active Directory用户应该使用默认值的displayName。
- ldap.emailField --用户的电子邮件地址。如果这个属性没有设置,默认值是邮件。 Active Directory用户应该使用缺省值邮件。
- ldap.searchFields -- LDAP字段将被用于用户搜索。如果这个属性没有设置,用户名,姓名和email字段将被搜索。此字段的值的一个例子是“用户名/ UID,名称/ CNAME”。搜索的uid和CNAME领域的目录中,并标记为“用户名”和“名称”的搜索UI。您可以添加许多领域,如您想使用逗号分隔的“显示名称/场”对。您应该确保任何适当的索引用于搜索,使搜索快速返回。
- ldap.searchFilter --加载用户时, 一个可选的搜索过滤器附加到默认的过滤器。默认的搜索过滤器创建使用属性指定ldap.usernameField。
- ldap.subTreeSearch -- 默认情况下,Openfire的将搜索整个LDAP子树(开始在该baseDN)时试图加载用户。如果将此属性设置为false,则子树搜索被禁用,用户将只能直接从装入的baseDN。禁用子树可以提高性能,但将无法找到用户,如果您的目录设置为使用的子文件夹下的baseDN。组设置
- provider.group.className ** -- 值设为 "org.jivesoftware.openfire.ldap.LdapGroupProvider".
- ldap.groupNameField ** -- 展示的组名. 可以不用设置,默认值是 cn.
- ldap.groupMemberField --组成员. 可以不用设置,默认是 member.
- ldap.groupDescriptionField --组描述,可以不同设置,默认值是 description.
- ldap.posixMode ** --值“true”的意思,组内的用户存储他们的用户名。 “false”指的是用户存储他们的整个DN组内的一个值。如果这个属性没有设置,默认值是false。 posix模式,必须正确设置你的服务器的在为组集成工作。常见的LDAP服务器的POSIX模式:** ActiveDirectory的:false
- ldap.groupSearchFilter -- 加载组.时,一个可选的搜索过滤器追加到默认的过滤器。默认的组搜索过滤器创建使用属性指定ldap.groupNameField
连接设置*
ldap.debugEnabled -- 调试模式开启
- ldap.sslEnabled -是否启用ssl
- ldap.initialContextFactory --初始上下文工厂的类的名字。如果该值没有被指定,“com.sun.jndi.ldap.LdapCtxFactory”将被代替。大多数用户都不需要设置这个值。
- ldap.autoFollowReferrals -- “true”值表示,LDAP转介应自动跟随。如果这个属性没有设置或设置为“false”,所使用的转介政策是保留的供应商。转介是一个实体,用于客户端的请求重定向到另一台服务器。转介包含其他对象的名称和位置。它是由服务器发送的,以指示客户端已请求的信息,可以发现在另一个位置(或位置),可能在另一台服务器或多个服务器。
- ldap.connectionPoolEnabled --连接池是否开启,值为“false”和true
配置实例:
<jive>
...
<ldap>
<host></host>
<port>389</port>
<usernameField>uid</usernameField>
<nameField>cn</nameField>
<emailField>mail</emailField>
<baseDN>ou=People;dc=example;dc=com</baseDN>
<adminDN>cn=Directory Administrator</adminDN>
<adminPassword></adminPassword>
</ldap>
<provider>
<user>
<className>org.jivesoftware.openfire.ldap.LdapUserProvider</className>
</user>
<auth>
<className>org.jivesoftware.openfire.ldap.LdapAuthProvider</className>
</auth>
<group>
<className>org.jivesoftware.openfire.ldap.LdapGroupProvider</className>
</group>
</provider>
...
</jive>
您最有可能登录到管理控制台更改授权用户名。默认情况下,只有用户名“admin”的用户能够登录。然而,你可能有不同的用户在LDAP目录中,你想成为管理员。授权的用户名列表控制通过admin.authorizedUsernames属性。例如,让usersnames,“joe”和“jane”登录到管理控制台:
<jive>
...
<admin>
...
<authorizedUsernames>joe, jane</authorizedUsernames>
</admin>
...
</jive>
自定义搜索过滤器
默认情况下,Openfire的加载下的所有对象的baseDN属性指定的ldap.usernameField。在用户名“字段设置为”UID“的情况下,所有用户的搜索将是”(UID =*)“。然而,这个逻辑不工作的情况下,当 - 例如,当一个目录包含以外的其他对象的用户,但所有对象共享的“uid”作为一个独特的标识符字段。在这种情况下,您可能需要使用ldap.searchFilter指定一个自定义的搜索过滤器。作为一个例子,为所有用户提供了一个“UID”和“CN”值“乔”是一个搜索过滤器:
“在过滤器中的值是一个道理,应该出现在所有的自定义搜索过滤器。将动态加载列表中的所有用户或用户名时加载一个用户时,带”*“代替。
某些自定义的搜索过滤器可能包括保留XML实体,如“&”。在这种情况下,您必须输入的搜索过滤器使用CDATA到的openfire.xml的文件的
<searchFilter>
<![CDATA[(&(sAMAccountName==
)(|(givenName= GEORGE)(givenname=管理员)))]]>
</ searchFilter
自定义上下文工厂
一些LDAP服务器或应用程序服务器可能需要使用不同的LDAP初始上下文工厂,而不是的默认(com.sun.jndi.ldap.LdapCtxFactory)。您可以设置一个自定义的初始上下文工厂加入以下openfire.xml:
<ldap>
... other ldap settings here
<initialContextFactory>com.foo.factoryClass</initialContextFactory>
</ldap>
连接池
默认LDAP供应商(sun )支持的LDAP服务器的连接池。连接池可以大大提高性能,尤其是在高负载的系统。连接池是默认启用的,但可以禁用,设置的Jive的属性ldap.connectionPoolEnabled to false::
<ldap>
...这里的其他LDAP设置
<connectionPoolEnabled></ connectionPoolEnabled>
</ LDAP>
你应该设置几个Java系统属性来更改默认池设置。有关详细信息,请参阅以下页面:
请注意,如果你打开LDAP调试,连接池将不会被启用。如果启用了SSL的LDAP模式是,你必须设置一个系统属性来启用SSL的LDAP连接池
LDAP vCard 集成
LDAP电子名片提供者将暴露LDAP配置文件中的信息作为vCard数据,支持的XMPP名片扩展的XMPP客户端。首先配置:
<provider>
...
<vcard>
<className>org.jivesoftware.openfire.ldap.LdapVCardProvider</className>
</vcard>
...
</provider>
接下来,您必须添加LDAP领域和vCard的领域中的openfire.xml的文件之间的映射。 vCard的属性被配置为vCard元素添加ATTRS=“attr1,attr2”属性。可以使用任意文本的元素值以及MessageFormat的风格占位符的LDAP属性。例如,如果你想映射的LDAP属性的displayName vCard元素FN,XML片断将:<FN attrs="displayName"></FN>
vCard的XML必须在CDATA,还必须很好地形成。这是确切的XML,该Provider将发送到客户端后,剥离后的attr属性和填充从LDAP检索的数据的占位符。该系统应具有足够的灵活性,以处理任何客户端的vCard格式。一个映射的例子如下。
<ldap>
<vcard-mapping>
<![CDATA[
<vCard xmlns='vcard-temp'>
<FN>displayName</FN>
<NICKNAME>uid</NICKNAME>
<BDAY>dob</BDAY>
<ADR>
<HOME/>
<EXTADR>Ste 500</EXTADR>
<STREET>317 SW Alder St</STREET>
<LOCALITY>Portland</LOCALITY>
<REGION>Oregon</REGION>
<PCODE>97204</PCODE>
<CTRY>USA</CTRY>
</ADR>
<TEL>
<HOME/>
<VOICE/>
<NUMBER>telephoneNumber</NUMBER>
</TEL>
<EMAIL>
<HOME/>
<INTERNET/>
<PREF/>
<USERID>mail</USERID>
</EMAIL>
<TITLE>
title
</TITLE>
<ROLE></ROLE>
<ORG>
<ORGNAME>o</ORGNAME>
<ORGUNIT></ORGUNIT>
</ORG>
<URL>labeledURI</URL>
<DESC>uid: uidNumberhome: homeDirectoryshell: loginShell</DESC>
</vCard>
]]>
</vcard-mapping>
</ldap>
LDAP 常见问题
当我使用LDAP是,通过openfire如何创建新用户?
Openfire的处理LDAP目录为只读。因此,这是不可能的,通过应用程序来创建或编辑用户。
当是同LADP时,为什么在管理员控制台上用户名不能分类?
如OpenLDAP的几种流行的LDAP服务器不支持服务器端排序的搜索结果。在这些服务器上,您可以ldap.clientSideSorting为true,通过设置在XML配置文件中启用客户端排序的搜索结果。
我切换到LADP是,为什么我登陆不了管理员控制台,发生什么情况了?
- 默认情况下,只有用户名“admin”登录到管理控制台。您的目录可能不包含用户名“admin”的用户。在这种情况下,你应该修改列表中的用户名授权登录到管理控制台(见上文)。
- 您可能已经设置的baseDN不正确的值。 LDAP模块递归搜索的baseDN指定的目录中的节点下的用户。当basedn是不正确的,没有用户会被发现。