首页 > 代码库 > Jira 6.3.6使用openldap进行认证——方法一

Jira 6.3.6使用openldap进行认证——方法一

在开始之前,请容许我尽情的发泄一下,话说关于jira和ldap的认证我至少是弄过两次了,第一次是在前一家公司,环境是CentOS 6.5+Jira 6.2+Windows AD 2012, 大概耗费了一周的时间,终于搞定了jira通过Microsoft AD进行认证,由于项目进度紧张,大概只是在几张纸上记录了一下配置要点,所以结果可想而知,根本没有任何总结留下来。然后现在的需求是jira要使用openldap进行认证,由于没有之前的积累,所以还是从头再来,不过花了两天时间终于还是完成了,于是这次下定决心一定要把配置给总结一下,不然下次再有这种需求又要苦逼了。顺便吐槽一下,网上关于jira 6.x部署的教程或文档有很多,但是关于jira和ldap进行整合的教程真的少的可怜,百度出来的结果竟然还是jira 4.2的版本,MG,这都多少年过去了,不能不说国内这种技术分享还是缺乏的,算了,吐槽完了,开始正文。


1、使用管理员账号登录jira之后,找到主页右上方的螺丝形按钮,然后点击并选择“用户管理”。

技术分享

2、在进入用户管理界面后,点击左侧的“用户目录”,默认情况下用户目录中只有jira内部目录,而使用ldap进行认证的前提就是创建一个ldap目录,所以这里点击“添加目录”。

技术分享

3、在点击添加目录之后,选择目录类型为LDAP。

技术分享

4、根据ldap的类型和相关配置进行配置ldap用户目录,这个可以参考官方文档。

技术分享

5、配置完成之后,可以点击“Quick Test”进行测试,测试正确之后再进行保存。

技术分享

6、出现以下的信息表示服务器和schema的配置正确,可以保存配置。但并不能说明ldap用户就可以登录jira了,还需要对用户是否存在、组的信息是否正确、用户是否可以进行认证等信息进行测试。

技术分享

7、回到用户管理下的用户目录,然后输入一个ldap账号进行测试,看是否能通过认证。

技术分享

8、如果测试的结果全部都通过的话,那么jira通过ldap认证基本上就没有什么问题了,如下图。如果有一两个是红色的(不通过),那可能你就需要根据环境好好排查了。

技术分享

9、下面给出我的ldap用户目录配置截图:

服务器配置如下图:

技术分享

注意:如果用户组模板配置中组的属性(objectClass)使用postsixGroup,那么Directory Type就选择OpenLDAP(Read-Only Posix Schema),不然在使用用户进行认证测试的时候retrieve group这一步始终无法通过;如果用户组模板配置中组的属性使用groupOfNames,那么Directory Type就选择OpenLDAP即可,这一点需要特别注意。

ldap权限配置如下图:

技术分享

User Schema设置如下图:

技术分享

用户模板设置如下图:

技术分享

10、下面顺便贴上openldap中的用户和组的数据:

[root@ldapsrv01 ~]# 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

dc: contoso

objectClass: top

objectClass: domain


# People, contoso.com

dn: ou=People,dc=contoso,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit


# Group, contoso.com

dn: ou=Group,dc=contoso,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit


# tech, Group, contoso.com

dn: cn=tech,ou=Group,dc=contoso,dc=com

objectClass: posixGroup

description: Technology

gidNumber: 10001

cn: tech

memberUid: zhangsan

memberUid: lisi

memberUid: test01

memberUid: test02

memberUid: test04


# zhangsan, People, contoso.com

dn: uid=zhangsan,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

givenName: zhang

sn: san

displayName: zhang san

uid: zhangsan

homeDirectory: /home/zhangsan

loginShell: /bin/bash

physicalDeliveryOfficeName: 1001

o: contoso.com

title: IT

cn: zhang san

uidNumber: 16474

gidNumber: 10001

userPassword:: e1NTSEF9V2kxcldOVXQybVVrYzRFSnY0ank2dG1QaHBOTmFsa3hWR3RsWWxGRFQ

 wST0=


# test, Group, contoso.com

dn: cn=test,ou=Group,dc=contoso,dc=com

objectClass: posixGroup

objectClass: top

cn: test

description: Test Group

gidNumber: 3401


# lisi, People, contoso.com

dn: uid=lisi,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

objectClass: shadowAccount

givenName: li

sn: si

displayName: li si

uid: lisi

homeDirectory: /home/lisi

loginShell: /bin/bash

telephoneNumber: 110

physicalDeliveryOfficeName: 110

o: contoso.com

l: Shenzhen

title: IT

uidNumber: 7164

shadowFlag: 0

shadowMin: 90

shadowMax: 99999

shadowWarning: 7

shadowInactive: 99999

shadowLastChange: 12011

shadowExpire: 99999

cn: li si

gidNumber: 10001

userPassword:: e1NTSEF9djlJUFB3OU5pVmR3enVnMDBzYmYvQXN0a3laQ05VSjBZa0pIVkZCYU5

 YZz0=


# test01, People, contoso.com

dn: uid=test01,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

givenName: test01

uid: test01

sn: test01

homeDirectory: /home/test01

loginShell: /bin/bash

st: CN

telephoneNumber: 110

physicalDeliveryOfficeName: 110

o: contoso.com

l: Shenzhen

title: IT

cn: test01

uidNumber: 12586

gidNumber: 10001

userPassword:: e1NTSEF9YkJuMVA5NGhMSXhQQUpzSU1hem5VYzUza1M1WWNHbFVkV05XZUVFNVM

 yVT0=


# test02, People, contoso.com

dn: uid=test02,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

uid: test02

loginShell: /bin/bash

st: CN

telephoneNumber: 110

physicalDeliveryOfficeName: 110

o: contoso.com

l: Shenzhen

title: IT

cn: test01

uidNumber: 12587

givenName: test02

sn: test02

homeDirectory: /home/test02

gidNumber: 10001

userPassword:: e1NTSEF9bjJjVHQ4cVgyZGdzL3k0UkxUWEhodFl4SzVGVGNVMDJVWGd5YVZoQ1N

 Iaz0=


# test04, People, contoso.com

dn: uid=test04,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

gidNumber: 0

givenName: test04

sn: test04

displayName: test04

uid: test04

homeDirectory: /home/test04

loginShell: /bin/bash

telephoneNumber: sfa

physicalDeliveryOfficeName: safas

o: sdfasf

facsimileTelephoneNumber: sfa

l: fasfsdaf

title: sfas

cn: test04

uidNumber: 35426

userPassword:: e1NTSEF9dWdsR1M2Y252SGJFckU2dDhkVTM2UDJyZWFkRVpGRXhVVTh2YWpCMWI

 wcz0=


# jira-users, Group, contoso.com

dn: cn=jira-users,ou=Group,dc=contoso,dc=com

objectClass: posixGroup

objectClass: top

cn: jira-users

description: jira-users

gidNumber: 1587

memberUid: test04


# search result

search: 2

result: 0 Success


# numResponses: 12

# numEntries: 11

11、成功配置完成ldap目录之后,jira会自动与ldap进行同步,可以在用户管理下的用户界面中看到openldap中的用户。

技术分享

12、在上一步,我发现用户同步过来之后是在tech组,但是tech组是openldap中的组,在jira中是没有定义这个组的角色的,所以我需要定义这个tech组的角色。(因为我设置的ldap permissions是只读的,所以同步过来的用户组是ldap的用户组,并没有添加到jira默认的用户组中,如果选择第二项Read-Only with local groups就可以将同步过来的用户添加到设置好的jira组中)

打开系统中的全局权限菜单,然后在右侧可以看到jira默认的项目角色,我要做的就是将openldap中的用户组tech添加jira的权限,方式就是使用下方的添加权限菜单,然后给tech添加“JIRA用户”和“创建共享的对象”等两个权限,修改完成后如下图。

技术分享

13、注销管理员登录,然后使用openldap中的账号进行登录测试。

技术分享

14、登录成功,进入jira的Dashboard界面,至此jira 6.3.6使用openldap认证结束。

技术分享


本文出自 “IT小二郎” 博客,转载请与作者联系!

Jira 6.3.6使用openldap进行认证——方法一