我花了很多天试图让Grafana通过LDAPS认证用户到Active Directory。如果有人有足够的魔法让它发挥作用,我会很高兴的。
我对Grafana有意见。我觉得这也许是个好地方。我正在尝试使用LDAPS进行用户身份验证,但失败了。
环境: ubuntu14.04 grafana6.2 a6.2 openldap2.4.31
下面是配置文件的相关部分:
[[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[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用户信息:
-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".I来成功,我不知道为什么。我认为可能有一些不正确的参数设置。
欢迎任何帮助!
发布于 2019-11-29 03:09:53
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就能够访问它。
https://stackoverflow.com/questions/58986918
复制相似问题