LDAP服务器正常但Grafana LDAP登录失败求助
Grafana LDAP认证失败排查方案(提示invalid username/password或未找到用户)
1. 验证LDAP搜索规则的准确性
- 核对
ldap.toml中的search_filter:如果用户用邮箱登录,需确保规则为(mail=%s);AD环境通常用(sAMAccountName=%s),OpenLDAP常用(uid=%s),必须匹配用户实际的登录属性。 - 检查
search_base_dns:确认其覆盖了用户所在的LDAP组织单元(OU),比如用户在ou=employees,dc=company,dc=com,配置的搜索基DN不能是ou=admin,dc=company,dc=com。 - 用
ldapsearch在容器内测试搜索有效性:
若返回空结果,说明搜索规则或基DN配置错误。docker exec -it <grafana容器名> ldapsearch -x -H ldap://<LDAP服务器地址>:389 -b "<搜索基DN>" "(<搜索属性>=<测试用户名>)"
2. 确认绑定DN的权限与有效性
- 验证绑定DN是否有读取用户条目的权限:部分LDAP服务器要求绑定用户具备目录读取权限,否则无法搜索到用户。
- 测试绑定DN的登录有效性:
输入绑定DN密码后,若返回docker exec -it <grafana容器名> ldapwhoami -x -H ldap://<LDAP服务器地址>:389 -D "<绑定DN>" -Wdn:<绑定DN>则有效,否则检查绑定DN或密码是否正确。
3. 检查容器内配置文件的加载情况
- 确认Docker Compose挂载路径正确:默认Grafana配置路径为
/etc/grafana/,需确保grafana.ini和ldap.toml挂载到该目录,示例挂载配置:volumes: - ./grafana.ini:/etc/grafana/grafana.ini - ./ldap.toml:/etc/grafana/ldap.toml - 进入容器核对配置内容:
确保内容与本地配置完全一致,避免挂载错误。docker exec -it <grafana容器名> cat /etc/grafana/ldap.toml - 检查容器内文件权限:确保Grafana运行用户(UID 472)可读取配置文件:
docker exec -it <grafana容器名> ls -l /etc/grafana/
4. 核对用户属性映射配置
- 确认
ldap.toml中的username_attribute与用户LDAP条目中的登录属性一致,比如AD用sAMAccountName,OpenLDAP用uid。 - 若配置了
email_attribute,确保该属性在用户LDAP条目中存在且非空,部分场景下Grafana依赖该属性完成用户创建。
5. 开启LDAP调试日志定位问题
- 修改
grafana.ini,开启调试日志:log_level = debug [auth.ldap] verbose_logging = true - 重启容器后查看详细日志:
日志会输出LDAP连接、搜索、绑定的完整过程,可精准定位是搜索无结果还是密码验证失败。docker logs -f <grafana容器名>
6. 排查LDAP连接细节
- 若使用LDAPS(端口636),需确认容器是否信任LDAP服务器证书,测试阶段可临时关闭证书验证:在
ldap.toml中添加ssl_skip_verify = true。 - 检查防火墙规则:确保Grafana容器能访问LDAP服务器的对应端口(389/636)。
内容的提问来源于stack exchange,提问作者OmerFaruk
相关产品推荐
相关产品推荐

