3

Confluence集成进freeIPA进行统一认证

 1 year ago
source link: https://bajie.dev/posts/20230216-freeipa_confluence/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Confluence集成进freeIPA进行统一认证

2023-02-16 2 分钟阅读

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

自然用 Freeipa 作为首选。

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

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

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

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

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

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

confluence-administrators

confluence-users

image-20230216171408006

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

image-20230216171611828

详细配置的参数如下:

配置如下:

Server Settings:
- Namel: freeipa
- Directory Type: OpenLDAP
- Server: example.com
- Port: 389
- Use SLL: false 
- Username: uid=admin,cn=users,cn=accounts,dc=bybon,dc=cn
- Password: <insert password here>


LDAP Schema:
- Base DN: dc=bybon,dc=cn
- Additional User DN: cn=users,cn=accounts
- Additional Group DN:cn=groups,cn=accounts


LDAP Permissions:
Select Read/Write


Advanced Settings: Default


User Schema Settings
- User Object Class: inetorgperson
- User Object Filter: (&(objectclass=inetorgperson)(memberOf=cn=confluence-users,cn=groups,cn=accounts,dc=bybon,dc=cn))
- User Name Attribute: uid
- User Name RDN Attribute: uid
- User First Name Attribute: giveName
- User Last Name Attribute: sn
- User Display Name Attribute: displayName
- User Email Attribute: mail
- User Password Attribute: userPassword
- User Password Encryption: SHA
- User Unique ID Attribute: uid


Group Schema Settings
- Group Object Class: groupofnames # all lowercase
- Group Object Filter: (objectclass=groupofnames) # all lowercase
- Group Name Attribute: cn
- Group Description Attribute: description
 

Membership Schema Settings
- Group Members Attribute: member #lowercase
- User Membership Attribute:memberOf


    

放全中文的图如下:

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 中。

image-20230216175857600.png

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

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

ldapsearch  -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))'

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK