上一篇中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。


wKiom1gBAxKzYfMLAAGqyXJHZjU532.jpg-wh_50

2、下面是配置的详细信息。

服务器设置和ldap schema,服务器信息还是根据实际情况进行填写。

wKioL1gBAxWDl3p5AAGr0ZJof74279.jpg-wh_50

LDAP Permissions(这次选择第二项)

wKioL1gBAxuz761yAAEidBEQ5P8126.jpg-wh_50

高级设置(基本上无须修改):

wKiom1gBAyGgXnVtAAHOUJj-mSY808.jpg-wh_50

User Schema Settings(这次用户对象类使用的是account属性):

wKiom1gBAyWC5Ur9AAF8sGziIX8236.jpg-wh_50

用户组模板设置(这一次组的对象类使用groupOfNames属性):

wKioL1gBAyrCpRQjAAEnEELH2hU221.jpg-wh_50

下面附上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属性以及对应的值

wKiom1gBCBqQ4R5tAAErde65odo090.jpg-wh_50

3、保存配置后,输入一个openldap账户进行测试。如果测试结果全部通过,就可以进行下一步,否则,就逐项进行检查并修改。

wKiom1gBAzKhrSX3AAHD7iLpynE411.jpg-wh_50

4、同步完成之后,在用户管理下的用户中可以看到同步过来的用户,目录都是openldap2。仔细查看不难发现,这些用户也都是在jira组,当然jira组是我在openldap中创建的组。根据之前的说法,如果选择了LDAP Permissions类型为Read-Only with local group,并设置了默认的用户组为jira-users,那同步过来的用户应该被添加到jira中的jira-users组的,但是这里并没有自动加入。

wKioL1gBAzjyAfteAAIICjQ48s8642.jpg-wh_50

5、这次我先不给ldap同步过来的组(jira组)添加jira项目的权限,使用其中的一个账户进行登录测试。

wKiom1gBAzyR8b3lAAERDleZpwE801.jpg-wh_50

6、登录成功,在我没有进行任何权限的添加的前提下,openldap的用户就可以登录jira了,这一点是跟之前不一样的。

wKioL1gBA0HAU9uXAAFOf6MlXtU887.jpg-wh_50

7、再次使用管理员登录,回到用户管理下的用户中查看,发现之前进行登录测试的openldap用户(mahan)的用户组已经多了一个jira-users组,说明openldap用户的确是自动加入了我们在LDAP Permissions中设置的默认组,但是前提是用户登录jira之后才会自动加入,不过最重要的用户可以登录jira的问题显然在这里就直接被解决了的。

wKiom1gBAw3AgdBTAAH_pVTDYJk582.jpg-wh_50