mindoc-org / mindoc

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

LDAP无法登陆成功,找不到用户或者多个用户 #959

Open MiManchiL opened 1 month ago

MiManchiL commented 1 month ago

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

  1. 你当前使用的是哪个版本的 MinDoc(godoc_linux_amd64 version)? v2.2-beta.1

  2. 你当前使用的是什么操作系统? windows 10 ltsc 2019

  3. 你是如何操作的? ################Active Directory/LDAP################

    是否启用ldap

    ldap_enable=true

    ldap协议(ldap/ldaps)

    ldap_scheme=ldap

    ldap主机名

    ldap_host=127.0.0.1

    ldap端口

    ldap_port=389

    ldap内哪个属性作为用户名

    ldap_attribute=sAMAccountName

    ldap内哪个属性作为邮箱

    ldap_mail=mail

    搜索范围

    ldap_base=DC=yk,DC=com

    第一次绑定ldap用户dn

    ldap_user=CN=admin,CN=Users,DC=yk,DC=com

    第一次绑定ldap用户密码

    ldap_password=admin

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

    ldap_user_role=2

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

    ldap_filter=objectClass=User

  4. 你期望得到什么结果? 可以正常ldap登录

  5. 当前遇到的是什么结果? [Member.go:85] 转入LDAP登陆 -> 309 [AccountController.go:157] 用户登录 -> LDAP用户不存在或者多于一个

gsw945 commented 1 month ago

一般是参数不对,请使用 https://github.com/mindoc-org/ldap-debug 调试,调试完成后修改配置文件即可

MiManchiL commented 1 month ago

一般是参数不对,请使用 https://github.com/mindoc-org/ldap-debug 调试,调试完成后修改配置文件即可

使用ldap-debug调试是OK的,但是在线上是NG的,debug时只有filter有不一样,做了sAMAccountName的筛选,也就是针对某个账号做筛选,不做的话会导致超size,然后在线上的话,ldap_filter=objectClass=User是这个,后面在调试过程发现个新提示【自动注册LDAP用户错误 账号只能由英文字母数字组成, 且在3-50个字符】,这个是用邮箱去作为登录名的出现提示,那邮箱有@mail.com,没有这个又是之前的报错,是否有地方,将账号改为sAMAccountName+密码认证呢?

gsw945 commented 1 month ago

ldap-debug 中只有查询的逻辑。

mindoc 中 LDAP 登录的逻辑在这里: https://github.com/mindoc-org/mindoc/blob/master/models/Member.go#L126