前言

因为公司采用metabase作为自助式报表工具,为了方便开放给公司的人员使用,避免频繁的手工录入,遂接入公司已有的ldap作为统一认证


一、ldap是什么?

ldap是一种轻量目录访问协议,数据存储是以树结构存储的,读取速度快,但不方便写入。(这里还是要了解一下ldap的概念的)
可以参考一下这两个:
ldap中文网ldap官网

二、配置metabase使用ldap认证

metabase是支持ldap认证的,我们只需要上web界面配置即可。但是metabse配置ldap基本没有日志打印,所以可能出错误也比较难以发现。这里强烈推荐使用ldapbrowser这里可以下载,browser是免费的连接ldap来查看相关目录

1.打开管理员界面,如图

LDAP 对接 ldap对接对个base_大数据


点击配置

2.进入ldap配置页面,如图

LDAP 对接 ldap对接对个base_大数据_02


主机名端口填写:ldap服务器的ip和端口,端口使用389,安全性选择None或StartTLS(SSL默认使用636端口)

用户名/密码填写能连上ldap的用户名密码,可以使用ldapbrowser尝试登陆,能正常登陆并显示ldap数据库的用户名密码都行

3.配置用户结构和属性

3.1 使用ldapbrowser连接ldap获取用户存放的层级和属性,如图

LDAP 对接 ldap对接对个base_大数据_03

3.2 ldap用户结构配置界面

LDAP 对接 ldap对接对个base_LDAP 对接_04

然后将包含全部用户的目录层级填入用户搜索库框,eg:OU=xxxx,DC=xxxx,DC=xxxx

用户筛选部分要比较注意,默认使用的用户筛选是:(&(objectClass=inetOrgPerson)(|(uid={login})(mail={login}))),这里要根据自己的ldap属性值来设置,比如objectClass指的是根据用户的哪个属性来查找用户,笔者这里根据上面ldap的图片填了user(其实person也行),后面两个指你用ldap的哪个字段登录验证,默认的指的是使用邮箱和uid作为输入认证,笔者根据自己的ldap配置的属性改成了:(&(objectClass=user)(|(sAMAccountName={login})(userprincipalname={login})))。ps:筛选里面的属性一定要是全部用户都要有,不然可能导致部分用户无法登录

属性的三个参数主要的用来映射ldap数据到metabase的元数据库的(笔者使用的元数据库是mysql),对应的是core_user的email,first_name,last_name三个字段,默认使用ldap里面的mail,givenName,sn三个属性。但是笔者ldap服务器有些用户没有mail字段,后面笔者将映射到mail的改成userprincipalname属性了。ps:这里在ldap里面对应的属性值应该全部都要有(使用默认属性,有些可能不存在会导致用户无法登陆)。

4.结果

LDAP 对接 ldap对接对个base_大数据_05


能正常登陆后,可以在metabase的元数据库查看到从ldap同步回来的数据信息(正常登陆后会同步)

最后的最后,发现一个问题,metabse登陆的时候是把密码明文提交的,可能是我配置的问题,如图。。。

LDAP 对接 ldap对接对个base_ldap_06

总结

metabase本身支持ldap,所以配置不难,主要难点是因为日志没有提示错误信息,可能会导致无法发现错误在哪里,不太方便改正,还有就是metabase提供的ldap有个同步组成员,按照笔者的理解应该是将ldap的目录下面的成员自动映射到某个角色,但是笔者配置了映射后暂未成功,后续可以继续尝试。