上一篇中Jira通过openldap进行认证是第一种方式,在这一篇将介绍另外一种方式,两种方式的不同是由于配置中用户组模板配置和Membership Schema Settings的不同决定的,上一篇中用户组模板配置中Group object class使用的属性是postsixGroup,而这一次的配置中在用户组模板配置中Group object class使用的属性是groupOfNames,默认情况下,openldap在安装完成后是没有这一属性的,关于如何扩展该属性,请参考之前的一篇文章:CentOS 6.5安装Openldap添加memberof属性
1、首先,我把之前的ldap用户目录先禁用(主要是两个openldap的环境域名都是contoso.com,怕引起冲突),然后在用户管理下的用户目录中再添加一个目录,依然是ldap类型,不过名字叫openldap2。
2、下面是配置的详细信息。
服务器设置和ldap schema,服务器信息还是根据实际情况进行填写。
LDAP Permissions(这次选择第二项):
高级设置(基本上无须修改):
User Schema Settings(这次用户对象类使用的是account属性):
用户组模板设置(这一次组的对象类使用groupOfNames属性):
下面附上openldap的用户和组的数据:
[root@ldapserver ~]# ldapsearch -D cn=admin,dc=contoso,dc=com -W -b dc=contoso,dc=com
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=contoso,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# contoso.com
dn: dc=contoso,dc=com
objectClass: dcObject
objectClass: organization
dc: contoso
o: contoso
# Users, contoso.com
dn: ou=Users,dc=contoso,dc=com
objectClass: organizationalUnit
ou: Users
# Groups, contoso.com
dn: ou=Groups,dc=contoso,dc=com
objectClass: organizationalUnit
ou: Groups
# test, Users, contoso.com
dn: uid=test,ou=Users,dc=contoso,dc=com
objectClass: account
uid: test
# testgroup, Groups, contoso.com
dn: cn=testgroup,ou=Groups,dc=contoso,dc=com
objectClass: groupOfNames
cn: testgroup
member: uid=test,ou=Users,dc=contoso,dc=com
# zhanglong, Users, contoso.com
dn: uid=zhanglong,ou=Users,dc=contoso,dc=com
uid: zhanglong
cn: zhanglong
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:
userPassword:: e1NTSEF9RmZPdDBBV1ltaCtCcVkzRG80YmFWOVgrdkh4c1kzQTFZbVZKTTNSaVN
tRT0=
shadowLastChange: 17053
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/zhanglong
# jira, Groups, contoso.com
dn: cn=jira,ou=Groups,dc=contoso,dc=com
objectClass: groupOfNames
objectClass: top
cn: jira
member: uid=zhanglong,ou=Users,dc=contoso,dc=com
member: uid=zhaohu,ou=Users,dc=contoso,dc=com
member: uid=wangchao,ou=Users,dc=contoso,dc=com
member: uid=mahan,ou=Users,dc=contoso,dc=com
# zhaohu, Users, contoso.com
dn: uid=zhaohu,ou=Users,dc=contoso,dc=com
uid: zhaohu
cn: zhaohu
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:
userPassword:: e1NTSEF9T1FORVU3Ym0rNUpHT3RFVGtvQlNDWmV5OEhWSVMyNWxlRFprY25WWVR
UQT0=
shadowLastChange: 17053
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10002
gidNumber: 10001
homeDirectory: /home/zhaohu
# wangchao, Users, contoso.com
dn: uid=wangchao,ou=Users,dc=contoso,dc=com
uid: wangchao
cn: wangchao
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:
userPassword:: e1NTSEF9K2JLVk42WnFmWlZyd1prcDhrMjVJV2RFVUtsc1ptVjVOVTA0VGpjMFY
zWT0=
shadowLastChange: 17053
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10003
gidNumber: 10001
homeDirectory: /home/wangchao
# mahan, Users, contoso.com
dn: uid=mahan,ou=Users,dc=contoso,dc=com
uid: mahan
cn: mahan
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:
userPassword:: e1NTSEF9OVBFY21nQVUvR1J1b0x3NWpYUmN0dElUQ2NaUU5qVmlRVFJIU0hndUw
xQT0=
shadowLastChange: 17053
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10004
gidNumber: 10001
homeDirectory: /home/mahan
# kff, Groups, contoso.com
dn: cn=kff,ou=Groups,dc=contoso,dc=com
objectClass: posixGroup
objectClass: top
cn: kff
gidNumber: 10001
# search result
search: 2
result: 0 Success
# numResponses: 12
# numEntries: 11
下面是openldap的树状结构:(注意jira组中member的属性,有多个成员的时候需要添加多个member属性以及对应的值)
3、保存配置后,输入一个openldap账户进行测试。如果测试结果全部通过,就可以进行下一步,否则,就逐项进行检查并修改。
4、同步完成之后,在用户管理下的用户中可以看到同步过来的用户,目录都是openldap2。仔细查看不难发现,这些用户也都是在jira组,当然jira组是我在openldap中创建的组。根据之前的说法,如果选择了LDAP Permissions类型为Read-Only with local group,并设置了默认的用户组为jira-users,那同步过来的用户应该被添加到jira中的jira-users组的,但是这里并没有自动加入。
5、这次我先不给ldap同步过来的组(jira组)添加jira项目的权限,使用其中的一个账户进行登录测试。
6、登录成功,在我没有进行任何权限的添加的前提下,openldap的用户就可以登录jira了,这一点是跟之前不一样的。
7、再次使用管理员登录,回到用户管理下的用户中查看,发现之前进行登录测试的openldap用户(mahan)的用户组已经多了一个jira-users组,说明openldap用户的确是自动加入了我们在LDAP Permissions中设置的默认组,但是前提是用户登录jira之后才会自动加入,不过最重要的用户可以登录jira的问题显然在这里就直接被解决了的。
本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1862096,如需转载请自行联系原作者