跳转至

使用 OpenLDAP 进行身份验证

本文介绍如何将 Nebula Graph 连接到 OpenLDAP 服务器,使用 OpenLDAP 中定义的 DN(Distinguished Name)和密码进行身份验证。

Enterpriseonly

仅企业版支持本功能。

认证方式

启用 OpenLDAP 身份验证后,输入用户的账号和密码登录 Nebula Graph 时,Nebula Graph 会在 Meta 服务中查找登录账号是否存在,如果账号存在,再根据认证方式去 OpenLDAP 中找到对应的 DN,验证密码。

OpenLDAP 支持的认证方式有两种:简单绑定认证和搜索绑定认证。

简单绑定认证(SimpleBindAuth)

简单绑定认证会根据登录账号和 Graph 服务配置信息,拼接成 OpenLDAP 可以识别的 DN,然后根据 DN 和密码,在 OpenLDAP 上进行验证。

搜索绑定认证(SearchBindAuth)

搜索绑定认证会读取 Graph 服务配置信息,查询配置信息中的uid和登录账号是否匹配,如果匹配,就读取这个 DN,然后用 DN 和密码,在 OpenLDAP 上进行验证。

前提条件

  • 已在 OpenLDAP 上导入用户的账号和密码信息。
  • OpenLDAP 所在服务器已开放相应认证端口。

操作步骤

以 OpenLDAP 上已存在的账号test2、密码passwdtest2为例进行演示。

  1. 连接 Nebula Graph,创建与 OpenLDAP 中对应的影子账号test2并授权。

    nebula> CREATE USER test2 WITH PASSWORD '';
    nebula> GRANT ROLE ADMIN ON basketballplayer TO test2;
    

    Note

    Nebula Graph 内创建用户时,密码可以任意设置。

  2. 编辑配置文件nebula-graphd.conf(默认目录为/usr/local/nebula/etc/):

    • 简单绑定认证(推荐)

      # 是否从配置文件获取配置信息。
      --local_config=true
      # 是否开启身份验证
      --enable_authorize=true
      # 身份验证方式:password、ldap、cloud
      --auth_type=ldap
      # OpenLDAP 服务器地址
      --ldap_server=192.168.8.211
      # OpenLDAP 服务器端口
      --ldap_port=389
      # OpenLDAP 中的 Schema 名称
      --ldap_scheme=ldap
      # DN 前缀
      --ldap_prefix=uid=
      # DN 后缀
      --ldap_suffix=,ou=it,dc=sys,dc=com
      
    • 搜索绑定认证

      # 是否从配置文件获取配置信息。
      --local_config=true
      # 是否开启身份验证
      --enable_authorize=true
      # 身份验证方式:password、ldap、cloud
      --auth_type=ldap
      # OpenLDAP 服务器地址
      --ldap_server=192.168.8.211
      # OpenLDAP 服务器端口
      --ldap_port=389
      # OpenLDAP 中的 Schema 名称
      --ldap_scheme=ldap
      # 绑定目标对象的 DN
      --ldap_basedn=ou=it,dc=sys,dc=com
      
  3. 重启 Nebula Graph 服务,让新配置生效。

  4. 进行登录测试。

    $ ./nebula-console --addr 127.0.0.1 --port 9669 -u test2 -p passwdtest2
    2021/09/08 03:49:39 [INFO] connection pool is initialized successfully
    
    Welcome to Nebula Graph!
    

    Note

    使用 OpenLDAP 进行身份验证后,本地用户(包括root)无法正常登录。


最后更新: March 7, 2023