Confluence集成进freeIPA进行统一认证

公司决定用统一用户管理系统,那必然是微软的 AD 和开源的 LDAP 二选一了

自然用 Freeipa 作为首选。

花时间仔细调研了一下,先说结论:

如果 confluence 已经有很多用户,那么对不起,这些用户的密码都必须通知到个人,强制进行修改,旧有的密码完全无法导出(除非一个一个人问出来)。

confluence 实际上是用了一个内置的目录软件来管理用户的,用户唯一存在的凭据就是邮箱。

confluence 支持同时从多个目录树中按照顺序来查询用户,查询到的结果会合并。举例来说,排第一的目录树是freeipa,排第二位的目录树是内置目录,两个目录树都有一个用户,两条记录的邮件是一致的,那么会在排第一的 freeipa 树中认证用户,但会把两个目录树中用户的信息拼接合并起来总体返回。

这样就明白了把,我们只用第一个 freeipa 目录树来认证用户,原有的组权限还是用第二个内置目录树中的信息,保持两棵树中用户的 mail 保持一致即可,步骤如下。

我们首先要提前在freeIPA里面建立两个组:

confluence-administrators

confluence-users

image-20230216171408006

然后跑到 Confluence 里,用户目录,添加一个 freeipa 的目录服务放在前面

image-20230216171611828

详细配置的参数如下:

 1配置如下:
 2
 3Server Settings:
 4- Namel: freeipa
 5- Directory Type: OpenLDAP
 6- Server: example.com
 7- Port: 389
 8- Use SLL: false 
 9- Username: uid=admin,cn=users,cn=accounts,dc=bybon,dc=cn
10- Password: <insert password here>
11
12
13LDAP Schema:
14- Base DN: dc=bybon,dc=cn
15- Additional User DN: cn=users,cn=accounts
16- Additional Group DN:cn=groups,cn=accounts
17
18
19LDAP Permissions:
20Select Read/Write
21
22
23Advanced Settings: Default
24
25
26User Schema Settings
27- User Object Class: inetorgperson
28- User Object Filter: (&(objectclass=inetorgperson)(memberOf=cn=confluence-users,cn=groups,cn=accounts,dc=bybon,dc=cn))
29- User Name Attribute: uid
30- User Name RDN Attribute: uid
31- User First Name Attribute: giveName
32- User Last Name Attribute: sn
33- User Display Name Attribute: displayName
34- User Email Attribute: mail
35- User Password Attribute: userPassword
36- User Password Encryption: SHA
37- User Unique ID Attribute: uid
38
39
40Group Schema Settings
41- Group Object Class: groupofnames # all lowercase
42- Group Object Filter: (objectclass=groupofnames) # all lowercase
43- Group Name Attribute: cn
44- Group Description Attribute: description
45 
46
47Membership Schema Settings
48- Group Members Attribute: member #lowercase
49- User Membership Attribute:memberOf
50
51
52    

放全中文的图如下:

image-20230216173503726

image-20230216173532717

image-20230216173556772

image-20230216173705940

image-20230216173740918

折磨了很久才弄出来,验证一下用户:

跑到 confluence 里面查看,明显是两个目录树合并的结果:

image-20230216180436695

关于 admin 的问题,注意一下,我们上面找用户的 filter 是找不到 admin 用户的。但是第一步认证是 ldap 做的,认证过了以后,freeipa 的 ldap filter 过滤后找不到 admin 这个用户,所以只会在内置目录有 admin 的信息,下面验证一下,admin 只存在于 Confluence Internal Directory 中。

再补充一点,freeipa 是可以匿名访问的,但是匿名状态下,一些属性字段是看不见的,比如 mail 。

所以想要查到全部字段,必须登录,放一个查询的脚本:

1ldapsearch  -W -D uid=admin,cn=users,cn=accounts,dc=bybon,dc=cn -h localhost -b cn=users,cn=accounts,dc=bybon,dc=cn '(&(objectclass=inetorgperson)(memberOf=cn=confluence-users,cn=groups,cn=accounts,dc=bybon,dc=cn))'

Traefik自动签发并续费证书+端口转发
Gitlab集成进freeIPA进行统一认证
comments powered by Disqus