【问题标题】:Grafana openldap auth:ldap users cannot be found by grafanaGrafana openldap auth:grafana找不到ldap用户
【发布时间】:2019-11-22 03:10:37
【问题描述】:

我花了很多天时间试图让 Grafana 通过 LDAPS 对 Active Directory 的用户进行身份验证。如果有人拥有让它工作所需的魔法,我会很高兴。

我在使用 Grafana 时遇到问题。我想这可能是个问的好地方。我正在尝试使用 LDAPS 身份验证进行用户身份验证,但失败了。

环境:ubuntu14.04 grafana6.2 openldap2.4.31

这是我的配置文件的相关部分:

----------------ldap.toml----------

[[servers]]

host = "xx.xxx.xx.xxx"

port = 389

use_ssl = false

start_tls = false

ssl_skip_verify = false

bind_dn = "cn=admin,dc=sscc,dc=com"

bind_password = '123456'

search_filter = "(cn=%s)"

search_base_dns = ["dc=sscc,dc=com"]

group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"

group_search_base_dns = ["cn=users,dc=sscc,dc=com"]

group_search_filter_user_attribute = "cn"

[servers.attributes]

name = "givenName"

surname = "sn"

username = "cn"

member_of = "dn"

email =  "email"

[[servers.group_mappings]]

group_dn = "cn=admin,dc=sscc,dc=com"

org_role = "Admin"

[[servers.group_mappings]]

group_dn = "cn=users,dc=sscc,dc=com"

org_role = "Editor"

org_id = 2

-------------default.ini---------

[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true

# LDAP backround sync (Enterprise only)
sync_cron = @hourly
active_sync_enabled = false

这里是 ldap 用户信息:

ldapsearch -LLL -w 123456 -x -H ldap://127.0.0.1 -D "cn=admin,dc=sscc,dc=com" -b

"cn=users,dc=sscc,dc=com"
dn: cn=users,dc=sscc,dc=com
gidNumber: 500
cn: users
objectClass: posixGroup
objectClass: top

dn: cn=test1,cn=users,dc=sscc,dc=com
cn:: IHRlc3Qx
gidNumber: 500
homeDirectory: /home/users/test1
sn: test1
loginShell: /bin/sh
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: MTIzNDU2
uidNumber: 1000
uid: test1
mail: test1@sscc.com

当我使用“test1”登录时,它会失败。

这是失败的日志:

t=2019-11-21T21:16:25-0500 lvl=info msg="Searching for user's groups" logger=ldap filter="(&(objectClass=posixGroup)(memberUid= test1))"
t=2019-11-21T21:16:25-0500 lvl=info msg="Second bind failed" logger=ldap error="LDAP Result Code 49 \"Invalid Credentials\": "
t=2019-11-21T21:16:25-0500 lvl=eror msg="Error while trying to authenticate user" logger=context userId=0 orgId=0 uname= error="Invalid Username or Password"
t=2019-11-21T21:16:25-0500 lvl=eror msg="Request Completed" logger=context userId=0 orgId=0 uname= method=POST path=/login status=500 remote_addr=xx.xxx.xx.x time_ms=9 size=53 referer=http://xx.xxx.xx.xxx:3000/login

但是当我设置 group_mappings 时:

[[servers.group_mappings]]
# If you want to match all (or no ldap groups) then you can use wildcard
group_dn = "*"
org_role = "Viewer"
org_id = 3

我可以通过使用“test1”成功。我不知道为什么。 我认为可能有一些不正确的参数设置。

欢迎任何帮助!

【问题讨论】:

    标签: authentication ldap grafana


    【解决方案1】:

    test1 用户似乎不是users 组的成员。

    PosixGroup 的成员身份由指向用户的uid 的一个或多个memberUid 属性定义。
    您的第一条日志消息显示了用于搜索包含具有 Uid test1 的成员的组的查询过滤器:(&(objectClass=posixGroup)(memberUid= test1))

    users 组包含属性objectClass=posixGroup,但不包含属性memberUid=test1,因此查询不返回。为了让test1 访问编辑角色,users 组应该有一个对应的memberUid 属性,将它们定义为成员:

    dn: cn=users,dc=sscc,dc=com
    gidNumber: 500
    cn: users
    objectClass: posixGroup
    objectClass: top
    memberUid: test1
    

    每当您使用group_dn="*" 定义组映射时,任何具有有效uid 的经过身份验证的用户都将获得该角色的授权,无论组成员身份如何。这就是 test1 在配置为忽略组成员身份后能够访问查看者角色的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2014-11-20
      相关资源
      最近更新 更多