Confluence 与Active Directory(LDAP)的集成

1. 按照说明安装Confluence,并创建缺省的管理员帐号admin
2. 下载hibernate_osuser_atlassianUserContext.xml, 并改名为atlassianUserContext.xml,然后覆盖confluence/WEB-INF/classes目录下的同名文件(记得先备份旧文件!).
3. 将confluence/WEB-INF/classes/upgradeSubsystemContext.xml内对osuserMigrationBean部分的注解去掉
4. 重起confluence, 并用admin登录后访问http://host.com/admin/osuser2atluser.jsp (假设你的服务器基础路径为http://host.com/)
5. 点击 Begin migration 按钮
6.  如果顺利的话你会看到:

Migrating users  Users migrated successfully!
Migrating propertyset data  Propertyset data migrated successfully!
Migrating groups  Groups migrated successfully!
7. 停掉confluence, 并把刚才去掉了注解的osuserMigrationBean重新注解起来
8. 下载 ldap_hibernate_cache_atlassianUserContext.xml 文件,并重命名为
atlassianUserContext.xml,然后覆盖confluence/WEB-INF/classes目录下的同名文件
下面是最麻烦的部分,就是设置ldap相关的属性
9.
在你的active directory里创建一个用来访问目录服务的用户,假设叫wikiuser,密码为123456。你的windows域为abc.com
10. 修改atlassianUserContext.xml内<property name="connectionProperties">部分,使confluence可以访问你的ldap服务:
        <property name="connectionProperties">
            
<props>
                
<prop key="host">192.168.1.1</prop>
                
<prop key="port">389</prop>
                
<prop key="securityPrincipal">wikiuser@abc.com</prop>
                
<prop key="securityCredential">123456</prop>
                
<prop key="securityProtocol">plain</prop>
                
<prop key="securityAuthentication">simple</prop>
                
<prop key="baseContext">dc=abc,dc=com</prop>
                
<prop key="initialContextFactory">com.sun.jndi.ldap.LdapCtxFactory</prop>
                
<prop key="batchSize">100</prop>
                
<prop key="timeToLive">0</prop>
            
</props>
        
</property>
其中绿色字部分是需要你根据你的环境进行修改的部分, 其他部分如果内容和我给出的不一样,则按我这里给出的改。
11. 修改修改atlassianUserContext.xml内<property name="schemaMappingsProperties">令confluence可以将相关的设置和你的ldap服务关联起来.
        <property name="schemaMappingsProperties">
            
<props>
                
<prop key="baseUserNamespace">dc=abc,dc=com</prop>
                
<prop key="baseGroupNamespace">ou=Special Groups,dc=abc,dc=com</prop>
                
<prop key="usernameAttribute">sAMAccountName</prop>
                
<prop key="userSearchFilter">(objectClass=user)</prop>
                
<prop key="firstnameAttribute">givenName</prop>
                
<prop key="surnameAttribute">sn</prop>
                
<prop key="emailAttribute">mail</prop>
                
<prop key="groupnameAttribute">cn</prop>
                
<prop key="groupSearchFilter">(objectClass=group)</prop>
                
<prop key="membershipAttribute">member</prop>
                
<prop key="userSearchAllDepths">true</prop>
                
<prop key="groupSearchAllDepths">true</prop>
            
</props>
        
</property>

这里有几个地方需要注意:
a) "baseGroupNamespace"这里,我假设你将所有需要用来管理权限的Group都放在"Special Groups"这个OU下了。一开始的时候你可以先把"ou=Special Groups,"这部分去掉。等搞清楚confluence和ldap的集成原理后再自己根据情况加上去。
b) "usernameAttribute" 如果我使用了"sAMAccountName"这个AD的特殊属性,好处是你在登录的时候可以直接使用abc这样的用户ID来登录,坏处是在confluence的Group manange里无法列出group里的用户。你可以改为使用"cn", 这样的话就可以列出用户,但是登录的时候可能需要使用完整的用户名进行登录,例如"Rayman Zhang"。

12. 保存修改后重新启动confluence. 并用admin登录
13. 去到Administration > Global Permissions页面,在Groups点Edit permission,然后增加你需要允许其使用confluence的Group. 同理修改"Individual Users"

大功告成,你现在可以用ldap里的用户进行登录了!

posted on 2006-04-24 15:20  Rayman Zhang  阅读(7913)  评论(0编辑  收藏  举报

导航