mindoc-org / mindoc

Golang实现的基于beego框架的接口在线文档管理系统
https://mindoc.com.cn/docs/mindochelp
Apache License 2.0
7.35k stars 1.91k forks source link

哪位同学配置成功了 ldap,帮忙看下我的配置是否有问题 #405

Closed ztj1993 closed 5 years ago

ztj1993 commented 5 years ago

请按照一下格式提交issue,谢谢!

  1. 你当前使用的是哪个版本的 MinDoc(godoc_linux_amd64 version)? v1.0.2

  2. 你当前使用的是什么操作系统? centos 7

  3. 你是如何操作的? 配置项如下:

    #是否启用ldap
    ldap_enable=true
    #ldap主机名
    ldap_host=172.17.0.2
    #ldap端口
    ldap_port=389
    #ldap内哪个属性作为用户名
    ldap_attribute=cn
    #搜索范围
    ldap_base=ou=test_ou,dc=example,dc=org
    #第一次绑定ldap用户dn
    ldap_user=cn=test_2,ou=test_ou,dc=example,dc=org
    #第一次绑定ldap用户密码
    ldap_password=123456
    #自动注册用户角色
    ldap_user_role=2
    #ldap搜索filter规则
    ldap_filter=objectClass=posixAccount
  4. 你期望得到什么结果? 正常登陆

  5. 当前遇到的是什么结果?

    [AccountController.go:67]  转入LDAP登陆
    [Member.go:122]  绑定 LDAP 用户失败 -> LDAP Result Code 32 "No Such Object":  
    [AccountController.go:93]  用户登录 -> LDAP搜索失败 

我的 ldap 已经在 gitlib 等配置成功,但是在 mindoc 上无法完成绑定,大家帮忙看下配置,谢谢了。

ztj1993 commented 5 years ago

我的 ldap 已经测试配置成功,主要注意如下问题:

主要配置如下:

#是否启用ldap
ldap_enable=true
#ldap主机名
ldap_host=172.17.0.2
#ldap端口
ldap_port=389
#ldap内哪个属性作为用户名
ldap_attribute=cn
#搜索范围
ldap_base=ou=test_ou,dc=example,dc=org
#第一次绑定ldap用户dn
ldap_user=cn=admin,dc=example,dc=org
#第一次绑定ldap用户密码
ldap_password=admin
#自动注册用户角色
ldap_user_role=2
#ldap搜索filter规则
ldap_filter=objectClass=posixAccount

由于测试就直接给了 admin 用户。

ygqygq2 commented 5 years ago

@ztj1993 您好,请问你是用的openldap吗,我用openldap根本添加不了email字段,提示不允许。

image

ygqygq2 commented 5 years ago

就是mail字段,成功了。

ztj1993 commented 5 years ago

@ygqygq2 嗯嗯,以后多交流

jlwang365 commented 4 years ago

@ztj1993 你好,我这边mail字段有值,但还是连不上。需要重新install吗?

ygqygq2 commented 4 years ago

@ztj1993 你好,我这边mail字段有值,但还是连不上。需要重新install吗?

你先要确认搜索范围能过滤出想要的用户。配置好后重启下就生效了。

ztj1993 commented 4 years ago

@jlwang365

ldap_enable=true
ldap_host=xxx.xxx.xxx
ldap_port=389
ldap_attribute=uid
ldap_base=ou=ztj,dc=xxx,dc=xxx
ldap_user=cn=ztj_access,dc=xxx,dc=xxx
ldap_password=xxx
ldap_user_role=2
ldap_filter=objectClass=posixAccount

如果需要协助,可以单独联系我。

jlwang365 commented 4 years ago

@ztj1993 好的,我先再自己研究研究,多谢~

MrmagicJ commented 1 year ago

我的 ldap 已经测试配置成功,主要注意如下问题:

  • 第一次绑定必须要绑定成功
  • ldap 用户中一定要有 email 字段

主要配置如下:

#是否启用ldap
ldap_enable=true
#ldap主机名
ldap_host=172.17.0.2
#ldap端口
ldap_port=389
#ldap内哪个属性作为用户名
ldap_attribute=cn
#搜索范围
ldap_base=ou=test_ou,dc=example,dc=org
#第一次绑定ldap用户dn
ldap_user=cn=admin,dc=example,dc=org
#第一次绑定ldap用户密码
ldap_password=admin
#自动注册用户角色
ldap_user_role=2
#ldap搜索filter规则
ldap_filter=objectClass=posixAccount

由于测试就直接给了 admin 用户。

请问下第一次绑定必须要绑定成功这个我这边一直都不行是咋回事啊?

ztj1993 commented 1 year ago

@MrmagicJ 没有日志无法确定原因

MrmagicJ commented 1 year ago
  1. 我的app.conf是这样配置的:

################Active Directory/LDAP################

是否启用ldap

ldap_enable=true

ldap主机名

ldap_host=192.168.100.25

ldap端口

ldap_port=389

ldap内哪个属性作为用户名

ldap_attribute=sAMAccountName

搜索范围

ldap_base=cn=mtncd,dc=mtn,dc=com

第一次绑定ldap用户dn

ldap_user=cn=mindoc,cn=mtncd,dc=mtn,dc=com

第一次绑定ldap用户密码

ldap_password=mindoc

自动注册用户角色:0 超级管理员 /1 管理员/ 2 普通用户

ldap_user_role=2

ldap搜索filter规则,AD服务器: objectClass=User, openldap服务器: objectClass=posixAccount ,也可以定义为其他属性,如: title=mindoc

ldap_filter=objectClass=posixAccount

  1. 使用的是docker运行的mindoc.
  2. 启动后登陆显示报错如下: 2023/03/21 13:48:43.633 [I] [Member.go:81] 转入LDAP登陆 -> mindoc mindoc | mindoc | 2023/03/21 13:48:43.636 [E] [Member.go:155] 绑定 LDAP 用户失败 -> LDAP Result Code 32 "No Such Object": mindoc | mindoc | 2023/03/21 13:48:43.636 [E] [AccountController.go:163] 用户登录 -> LDAP搜索失败
  3. 这个ldap已经跟gitlab和gerrit成功部署使用了。
ztj1993 commented 1 year ago

@MrmagicJ 仅有的日志没有办法看出来问题

  1. 可以确认下 ldap_user=cn=mindoc,cn=mtncd,dc=mtn,dc=com 的权限
  2. ldap_user=cn=mindoc 的 sAMAccountName 属性确认一下
  3. 注意所有的用户都要是 objectClass=posixAccount

如果还不行,可以远程看下,发邮件

MrmagicJ commented 1 year ago

改了下ldap_attribute=uid,现在可以使用用户名登陆进去了。感谢。