LDAP
更新时间: 2026/02/09
在Gitcode上查看源码

LDAP介绍

LDAP是基于X.500标准的轻型目录访问协议(Lightweight Directory Access Protocol),它的信息模型基于条目(entry),一个条目是多个属性的集合,并且有一个全局唯一的专有名称DN(Distinguished Name),DN用于明确地引用条目(可以理解为一个目录的绝对路径)。条目的每一个属性都有一个类型和一个或多个值。这些类型通常是便于记忆的字符串,例如“ CN ”表示通用名称(Common Name)、“OU”表示组织单位(Organization Unit)等。在Lightweight Directory Access Protocol (LDAP):String Representation of Distinguished Names RFC4514 中对这些属性有作定义。

txt
      String  X.500 AttributeType
      ------  --------------------------------------------
      CN      commonName (2.5.4.3)
      L       localityName (2.5.4.7)
      ST      stateOrProvinceName (2.5.4.8)
      O       organizationName (2.5.4.10)
      OU      organizationalUnitName (2.5.4.11)
      C       countryName (2.5.4.6)
      STREET  streetAddress (2.5.4.9)
      DC      domainComponent (0.9.2342.19200300.100.1.25)
      UID     userId (0.9.2342.19200300.100.1.1)

在LDAP中,目录条目以树状分层结构排列。传统上,该树结构反映了地理或组织的边界。

当应用在网络中时,可以基于网络域名进行排列。

举个简单的例子。

txt
例如你需要在一个苹果园中找到某个苹果,那么当前如何对苹果进行定位呢?
首先要确定目标苹果是在哪棵树上(dc),然后记录从树根开始到目标苹果记录的所有分支(ou),最后得到指定的苹果(uid)。
现在定位到这个目标苹果的位置了,它在最大那棵树(biggest)的东边分支(east)的南边分支(south)的西边分支(west)上那个绿色的(green)。
那么LDAP中是如何存储这个苹果的位置呢?
树:dc=biggest
分支:ou=west, ou=south, ou=east
苹果:cn=green
那么这个苹果的位置如下:
dn:cn=green, ou=west, ou=south, ou=east, dc=biggest
用我们常用的文件系统来解释的话,其实就是 biggest/east/south/west/green

BMC端的LDAP配置

openUBMC支持开启或关闭LDAP用户登录功能。要使用LDAP用户登录,必须开启LDAP功能。 openUBMC最多支持连接6台LDAP域服务器(Windows AD, Linux OpenLDAP或FreeIPA), LDAP用户只要通过其中一个域控制器认证即可登录。 LDAP功能各配置项值是否大小写敏感与LDAP服务端相关,为了确保能正常使用openubmc LDAP功能,请配置时确保各配置项大小写与LDAP服务端一致。

基本属性配置

属性名说明对应属性
LDAP服务器地址LDAP服务器的地址。
输入格式:IPv4地址、IPv6地址或域名。
启用证书验证功能后,该处需要配置为LDAP服务器的FQDN(主机名.域名),且需要在网络配置部分配置DNS。
HostAddr
LDAPS端口LDAP服务的端口号。
取值范围:1~65535。
默认值:636。
Port
域名域控制器中定义的LDAP用户所属角色组的域。UserDomain
绑定标识名LDAP代理用户标识名。BindDN
绑定密码LDAP代理用户的认证密码。BindDNPsw
用户应用文件夹能够登录BMC的LDAP用户在LDAP服务器上所属的目录。
输入节点的格式为:“CN=xxx”、“OU=xxx”或“O=xxx”,当存在多层级节点时,下级节点在前,上级节点在后,依次排列,用半角逗号隔开。
Folder

LDAP服务器地址

LDAP服务器地址可以为IPv4、IPv6或域名(FQDN)。

LDAP服务器地址为IPv4或IPv6:

  1. 必须关闭**证书验证”功能。
  2. 必须在网络配置-->选择使用的IP协议版本,配置IP中配置支持了对应的IP协议版本(IPv4或IPv6)及对应的IPv4或IPv6地址。

LDAP服务器地址为域名(FQDN):

  1. 必须在网络配置-->DNS中配置了正确的DNS服务,该DNS服务器必须能正确解析LDAP服务器域名。

LDAPS端口

出于LDAP账号安全考虑,仅支持LDAPS(LDAP over SSL)。openUBMC作为客户端与LDAP服务器通讯时使用的是安全的LDAPS协议,LDAP账号信息在网络上SSL加密传输。LDAPS端口默认值为636,一般不需要修改。

由于只支持LDAPS,不支持无SSL的LDAP(端口号:389),所以LDAP服务器必须安装了证明自身身份可信的服务器证书,与是否开启了LDAP证书验证无关。

域名

用于配置LDAP服务端所在的域。

  1. LDAP服务端为Windows Active Directory时,openUBMC的LDAP域名配置与Active Directory域相同;
  2. LDAP服务端为Linux OpenLDAP时, 查看openldap配置文件slapd.conf中的配置: 对应openUBMC的LDAP域名配置则为bmctest.com

绑定标识名和绑定密码

绑定标识名为可选配置项。如果需要使用LDAP代理用户(LDAP Proxy User)认证增强LDAP用户认证的安全性时,才需要配置绑定标识名,同时需要配置绑定密码

LDAP代理用户认证功能和LDAP CA证书功能的用途相同:用于确认LDAP服务器的身份,增强登录认证的安全性。因此,LDAP代理用户认证功能和LDAP CA证书功能只需开启一个就可以了。当然,也支持同时开启LDAP代理用户认证和LDAP CA证书。

绑定标识名的配置方法如下:

  • 配置绑定标识名为显示名称(Display Name), 对应openubmc LDAP配置(同时配置绑定标识名及其密码,以及必须正确配置用户搜索文件夹)。

  • 配置绑定标识名为用户登录名(Login Name),对应openubmc LDAP配置(同时配置绑定标识名及其密码,以及必须正确配置用户搜索文件夹)。

  • 配置绑定标识名为DN(Distinguish Name,唯一区别一个用户),对应openubmc LDAP配置(同时配置绑定标识名及其密码,以及必须正确配置用户搜索文件夹),其中“绑定标识名”配置为CN=bmcldapuser,CN=Users,DC=openubmc,DC=com(与LDAP服务端对应)。该项配置遵循以下规则:

    • CN=bmcldapuser必为CN=xxxx格式,xxxx表示LDAP服务器配置的某用户的全名,即Display Name;

    • CN=bmcldapuser,CN=Users,DC=openubmc,DC=com中CN,DC字段并非固定,必须与LDAP服务端配置对应即可;

    • CN和OU的差别:

      • 若LDAP服务端为OU=Users,则openubmc LDAP也必须配置为CN=bmcldapuser,OU=Users,DC=openubmc,DC=com;

      • 若LDAP服务端为CN=Users,则openubmc LDAP也必须配置为CN=bmcldapuser,CN=Users,DC=openubmc,DC=com;

        Users为LDAP服务端配置的目录名称,可更改,保持LDAP服务端与openubmc LDAP一致即可。

      • 多级目录的配置:

      若LDAP服务器有多级目录CN=Users2,CN=Users1(Users1为Users2的父目录),则openUBMC LDAP也必须配置为CN=bmcldapuser,CN=Users2,CN=Users1,DC=openubmc,DC=com;CN=Users2,CN=Users1中CN参考CN和OU的差别配置。

      • DC=openubmc,DC=com为LDAP服务的域名。

:与LDAP相关的几个重要缩写的说明:

  • DN: Distinguished Name的缩写,指一个完整的CN,OU,DC字串,唯一区别一个LDAP用户,比如:CN=bmcldapuser,CN=Users,DC=openubmc,DC=com称为一个DN。
  • CN: Common Name的缩写,指一个用户名、用户组名或者一个目录的名称,比如:CN=bmcldapuser,CN=Users。
  • OU: Organization Unit的缩写,指一个组织单位目录的名称,比如:CN=openubmc,OU=openUBMC,或者CN=msbmc,OU=IT,OU=openUBMC.
  • DC: Domain Name的缩写,指域名,比如:DC=openubmc,DC=com。

用户应用文件夹

使用LDAP用户登录openUBMC时,登录用户在LDAP服务器上用户应用文件夹所定义的目录下搜索用户,能加快登录认证速度。

建议配置“用户搜索文件夹”:可配置为CN=xxx、OU=xxx(xxx表示目录名),或者有多级目录时可配置为CN=xxx,CN=xxx或OU=xxx,OU=xxx。关键是与LDAP服务端配置对应即可。

配置示例

此处赋上配置的一个案例,其中绑定标识名和绑定密码非必填项:

BMC中LDAP证书管理

证书验证

登录LDAP校验时可以选择不启用证书校验或者启用证书验证:

  1. 不启用证书验证即链接LDAP服务器时,不使用本地CA证书对LDAP域服务器的服务证书进行验证
  2. 启用证书验证则分为两个校验级别:
    • Demand: 若检测到客户端证书错误或没有证书,不允许登录BMC
    • Allow: 若检测到客户端证书错误或没有证书,依然允许登录BMC

开启证书验证:

  1. 当尝试LDAP账号登录时,会先通过证书验证LDAP服务器身份是否可信。如果可信才会进一步校验LDAP账号密码;否则,登录失败。
  2. 必须将LDAP服务器地址配置为域名(FQDN)。
  3. 必须在LDAP域控制器的服务器上导入具有“服务器身份验证”功能的服务器证书,该证书必须是BMC导入的“LDAP CA证书”签发的证书链上的证书。
  4. 必须在网络配置->DNS中配置了正确的DNS服务,该DNS服务器必须能正确解析LDAP服务器域名。
  5. 必须在BMC导入正确的CA证书。

证书上传、吊销

此部分已经收编到统一的CA证书管理中,在 用户&安全->证书管理->CA证书管理 页面进行操作。

用户组配置

属性名说明对应属性
组名LDAP用户所属角色组的名称。GroupName
组应用文件夹能够登录BMC的LDAP组在LDAP服务器上所属的目录。
输入节点的格式为:**CN=xxx”、**OU=xxx”或“O=xxx”,当存在多层级节点时,下级节点在前,上级节点在后,依次排列,用半角逗号隔开。
GroupFolder
角色LDAP用户组的权限角色。GroupUserRoleId
登录规则LDAP组应用的登录规则,对已选择该登录规则的LDAP组进行限制。GroupPermitRuleIds
登录接口LDAP组使能的登录接口,通过该接口,LDAP组的成员可登录BMC系统。GroupLoginInterface

此处赋上一个配置案例,从登陆接口这一栏可以看到,支持ldap组用户登录的接口有web、redfish和ssh。其中,web支持自动匹配和指定域登录,redfish和ssh都是自动匹配模式。

LDAP组

LDAP服务端添加的用户都会属于某个用户组,登录openUBMC时所使用的用户必须属于该用户组。

  1. LDAP服务端为Windows Active Directory时, openUBMC LDAP用户组配置与Active Directory相同

  2. LDAP服务端为Linux OpenLDAP时,查看openldap中定义用户和组的*.ldif文件, 如图所示,组为rAdmin

LDAP组应用文件夹

使用LDAP用户登录openUBMC时,登录用户在匹配用户组时,会在LDAP服务器上LDAP组应用文件夹所定义的目录下搜索用户组,能加快登录认证速度。

建议配置LDAP组应用文件夹:可配置为CN=xxx、OU=xxx,或者有多级目录时可配置为CN=xxx,CN=xxx或OU=xxx,OU=xxx。关键是与LDAP服务端配置对应即可。

LDAP在BMC中的属性

LDAP相关信息BMC中对应的class对应路径实际对象属性
LDAP域控制器LDAPController
远程用户组RemoteGroup