跳到主要内容

配置LDAP认证

要成功启用 CLI 用户的 LDAP 认证和/或客户端的 LDAP 授权,必须配置以下内容:

  • 在外部主机机器上,最多配置三个 LDAP 服务器
  • 在 Solace PubSub+ 事件代理上,最多配置十个 LDAP 配置文件

有关客户端的 LDAP 授权信息,请参阅配置客户端 LDAP 授权.

配置LDAP服务器

要成功启用 CLI 用户的 LDAP 认证和/或客户端的 LDAP 授权,LDAP 管理员必须在外部主机机器上安装并配置 LDAP 服务器。有关选择主机机器和安装服务器软件的信息,请参阅第三方 LDAP 服务器文档。

仅使用 LDAP 版本 3 与 Solace PubSub+ 事件代理一起使用。不支持 LDAP 版本 1 和 2.

配置LDAP配置文件

要使 CLI 用户的 LDAP 认证和/或客户端的 LDAP 授权正常工作,必须在事件代理上配置并启用 LDAP 配置文件。LDAP 配置文件包含认证/授权请求重试超时值以及 LDAP 配置文件使用的每个 LDAP 服务器的 LDAP 认证/授权配置。每个 LDAP 配置文件可以使用最多三个 LDAP 服务器,最多可以配置十个 LDAP 配置文件。

至少,系统管理员必须配置至少一个可访问的 LDAP 服务器和 LDAP 配置文件的搜索基础 DN。然后必须启用 LDAP 配置文件(请参阅启用 LDAP 配置文件)。

  • 要创建新的 LDAP 配置文件,请输入以下 CONFIG 级别命令:
solace(configure)# authentication
solace(configure/authentication)# create ldap-profile <profile-name>
  • 要编辑现有 LDAP 配置文件的属性,请输入以下 CONFIG 级别命令:
solace(configure)# authentication
solace(configure/authentication)# ldap-profile <profile-name>

其中:

  • <profile-name> 是 LDAP 配置文件的名称。LDAP 配置文件名称可以包含最多 32 个字母数字字符和下划线。

此命令的 no 版本,no ldap-profile <profile-name>,会从事件代理中删除指定的 LDAP 配置文件(名为 default 的 LDAP 配置文件不能被删除)。在删除 LDAP 配置文件之前:

  • 必须通过 shutdown LDAP 配置文件认证 CONFIG 命令禁用它
  • 不能有其他配置对象引用它

创建 LDAP 配置文件时,它不会自动启用。要启用 LDAP 配置文件,您必须输入 no shutdown LDAP 配置文件认证 CONFIG 命令(请参阅启用 LDAP 配置文件)。

设置 ldap-profile 后,您可以配置以下参数:

  • 允许未经认证的认证
  • 配置管理员区分名称
  • 配置搜索参数
  • 启用 LDAP 配置文件
  • 启用 TLS/SSL 加密
  • 注册 LDAP 服务器

允许未经认证的认证

如 RFC 4513 所讨论的,LDAP 支持未经认证的认证。如果为 LDAP 配置文件启用了 allow-unauthenticated-authentication 属性,则所有客户端都可以在没有密码的情况下通过 LDAP 服务器认证并连接到事件代理(如果 LDAP 服务器允许未经认证的认证)。这可能会引入显著的安全风险;因此,默认情况下,LDAP 配置文件上不启用未经认证的认证。

要配置 LDAP 配置文件以允许所有客户端进行未经认证的认证(如果 LDAP 是事件代理上配置的认证方法),请输入以下 CONFIG 命令:

solace(configure/authentication/ldap-profile)# allow-unauthenticated-authentication

此命令的 no 版本,no allow-unauthenticated-authentication,关闭 LDAP 的未经认证的认证(默认),以便所有尝试在没有密码的情况下连接的 LDAP 配置文件客户端都会被事件代理立即拒绝,而无需咨询 LDAP 服务器.

配置管理员区分名称

要配置当前 LDAP 配置文件中事件代理的凭据以连接到 LDAP 服务器,请输入以下 CONFIG 命令:

solace(configure/authentication/ldap-profile)# admin dn <admin-dn> password <admin-password>

其中:

  • <admin-dn> 是事件代理用于向 LDAP 服务器进行认证的 LDAP 区分名称.
  • <admin-password> 是与管理员区分名称一起使用的密码,以绑定到 LDAP 服务器.

要配置当前 LDAP 配置文件中连接到 LDAP 服务器的搜索参数,请输入以下 CONFIG 命令:

solace(configure/authentication/ldap-profile)# search [base-dn <distinguished-name> | deref {never | search | base | always} | filter <filter> | follow-continuation-references | scope {base | one-level | subtree} | timeout <duration>]

其中:

  • base-dn 设置搜索的基础节点:

    • <distinguished-name> 是目录树中开始搜索的节点的 LDAP 区分名称。例如:“ou=software,dc=solacesystems,dc=com
  • deref 配置目录搜索的别名解析行为:

    • never — 从不解析别名
    • search — 仅在搜索时解析别名
    • base — 仅在定位基础节点时解析别名
    • always — 始终解析别名(默认)
  • filter 设置用于在目录服务中定位单个用户的模板过滤器:

    • <filter> 是用于搜索目录条目的过滤器字符串。 可以将以下替换变量添加到过滤器中:

      • $CLIENT_USERNAME

      • $VPN_NAME 替换变量被事件代理识别,并用客户端的相关信息替换。使用替换变量的过滤器示例:

      • “(&(cn=$CLIENT_USERNAME)(ou=$VPN_NAME))”

      • “(cn=$CLIENT_USERNAME)”

      当使用 LDAP 对用户进行认证和/或授权时,用户名被替换到过滤器字符串中的变量 $CLIENT_USERNAME 中.

  • follow-continuation-references 启用或禁用对联系的 LDAP 服务器返回的继续引用的跟踪。当此参数启用时,如果 LDAP 搜索没有在联系的服务器上完全结束,则对相关条目的搜索可能会在它引用的多达十个其他服务器上继续进行。默认情况下,此参数是启用的.

  • scope 配置目录搜索的范围:

    • base — 仅搜索基础节点
    • one-level — 仅搜索一层深
    • subtree — 搜索整个子树目录(默认)
  • timeout 配置在重试对 LDAP 服务器的认证或授权请求之前等待的时间(以秒为单位):

    • <duration> 是一个从 1 到 40 的整数,表示重试请求之前等待的时间(以秒为单位)。这是 LDAP 服务器完成搜索请求的时间.

与 LDAP 请求相关的有两个可配置的超时。一个是用于用户名和密码的 LDAP 查找,另一个是用于查找客户端的组成员身份.

启用LDAP配置文件

shutdown LDAP 配置文件认证 CONFIG 命令禁用当前 LDAP 配置文件。此后,所有尝试使用此 LDAP 配置文件进行认证的客户端都将失败,直到通过 no shutdown LDAP 配置文件认证命令再次启用它.

  • 要在事件代理上启用当前 LDAP 配置文件,请输入以下 CONFIG 命令:
solace(configure/authentication/ldap-profile)# no shutdown
  • 要在事件代理上禁用当前 LDAP 配置文件,请输入以下 CONFIG 命令:
solace(configure/authentication/ldap-profile)# shutdown

默认情况下,事件代理上不启用 LDAP 配置文件.

启用TLS/SSL加密

启用 LDAP 认证的 TLS/SSL 加密有两种方式:StartTLS 和 LDAPS.

使用 StartTLS 的 LDAP 认证 — 在默认端口 389 上建立的明文 LDAP 连接,然后升级为安全连接.

要在当前 LDAP 配置文件中启用 TLS/SSL 加密与 StartTLS,请输入以下 CONFIG 命令:

solace(configure/authentication/ldap-profile)# starttls

此命令的 no 版本,no starttls,禁用当前 LDAP 配置文件的 TLS.

使用 LDAPS 的 LDAP 认证 — 默认情况下,通过端口 636 的安全连接

要启用使用 LDAPS 的加密连接,请在步骤 3 中将 ldaps:// 作为前缀添加到 ldapserver 参数中指定的 LDAP 服务器名称。有关更多信息,请参阅注册 LDAP 服务器.

  • 如果指定了带有 LDAPS 协议的 LDAP 服务器主机 URL,则忽略 starttls 设置.
  • 从 Solace PubSub+ 事件代理 9.5.0 版本开始,[no] tls 命令已被弃用.
  • 在执行配置 LDAP 认证的 TLS 支持过程时,CA 证书的通用名称 (CN) 必须与 LDAP 主机的主机名组件匹配.

注册LDAP服务器

要注册 LDAP 配置文件使用的每个 LDAP 服务器的连接信息,请为每个主机输入以下 CONFIG 命令:

solace(configure/authentication/ldap-profile)# ldap-server <ldap-host> index <server-index>

其中:

  • <ldap-host> 是 LDAP 服务器的统一资源指示符 (URI)。系统管理员可以指定 IP 地址和端口号(如果没有指定数字,则默认使用端口 389)或域名。例如,“ldap://192.167.123.4:389”或“ldap://ldap.solace.com”.
    • 对于使用 StartTLS 的 LDAP 认证,LDAP 主机中的端口用于 LDAP 服务器的 TLS 和非 TLS 连接.
    • 确保 LDAP 服务器 IP 地址可以从事件代理管理接口访问.
    • 如果 LDAP 服务器使用主机名:
      • 您必须在事件代理上配置名称服务器。有关更多信息,请参阅 DNS 配置.
      • 在执行配置 LDAP 认证的 TLS 支持过程时,受信任的 CA 证书的通用名称 (CN) 必须与 LDAP 主机的主机名组件匹配.
    • 每个 LDAP 配置文件最多支持三个 LDAP 服务器。您必须提供 LDAP 配置文件使用的每个 LDAP 服务器的连接信息.
  • <server index> 是要配置的主机的优先级索引。有效值为 1、2 或 3.

此命令的 no 版本,no ldap-server {<ldap-host> | index <server-index>},会取消配置 LDAP 主机,并删除 Solace PubsSub+ 事件代理中所有相关的配置值.

使用TLS/SSL

默认情况下,在认证过程中,Solace PubSub+ 事件代理(LDAP 客户端)与 LDAP 服务器之间发送的信息是明文发送的。如果需要更好地保护事件代理和配置的 LDAP 服务器之间传递的信息,则可以使用 TLS/SSL 加密通信。如在启用 TLS/SSL 加密中提到的,您可以使用 StartTLS 或 LDAPS 配置 LDAP 认证的 TLS/SSL 支持.

要使用 TLS/SSL 进行 LDAP 认证/授权,必须使用启用 TLS/SSL 的 LDAP 配置文件,并且事件代理必须配置有证书颁发机构 (CA) 批准的证书列表.

配置LDAP认证的TLS支持

要支持对 LDAP 服务器的连接进行 TLS/SSL 加密,请执行以下操作:

  1. 您可以使用 StartTLS 或 LDAPS 启用安全连接.
    • 要使用 StartTLS 启用安全连接,请使用以下命令:
solace(configure/authentication/ldap-profile)# starttls

如果指定了带有 LDAPS 协议的 LDAP 服务器主机 URL,则忽略 starttls 设置.

  • 要使用 LDAPS 启用安全连接,在步骤 3 中,将 ldaps:// 作为前缀添加到 ldapserver 参数中指定的 LDAP 服务器名称.
  1. 导入并加载受信任的 CA 证书到事件代理(请参阅配置域验证证书颁发机构列表).
  2. 通过 ldap-server LDAP 配置文件认证 CONFIG 命令在事件代理上为 LDAP 配置文件配置 LDAP 服务器的 TLS/SSL 服务。有关配置说明,请参阅注册 LDAP 服务器.

在配置 LDAP 服务器的 TLS/SSL 时,主机名或 IP 地址必须与 LDAP 服务器证书的主题或主题备用名称匹配.

例如,如果 LDAP 服务器主机名为 ldap.solace.com,您可以使用 Solace CLI 验证服务器名称:

solace# shell “debug”login: support
Password:
[support@solace ~]$ openssl s_client -connect ldap.solace.com:636

这将返回证书,证书中指定的服务器是证书主题的 CN,例如:

subject=/CN=ldap.solace.comQh

如果您使用 StartTLS,在事件代理上配置 LDAP 服务器时,应为服务器主机名指定未加密端口.

查看事件代理的信任CA证书

要查看事件代理的信任 CA 证书,请输入以下用户 EXEC 命令:

solace> show domain-certificate-authority ca-name <ca-name> [cert [raw-content]

其中:

  • <ca-name> 是证书颁发机构的名称.
  • raw-content 指定显示 CA 证书的原始内容.

配置LDAP组

CLI 用户可以属于一个 LDAP 组,该组可用于授权 CLI 用户。为每个 LDAP 组配置特定的访问级别.

CLI 用户可能属于多个 LDAP 组,每个组定义的访问级别可能不同。在这种情况下,使用 CLI 用户所属组中定义的最大全局访问级别和最大消息 VPN 访问级别.

要创建代表 LDAP 服务器上存在的 LDAP 组的 LDAP 组对象,请输入以下 CONFIG 命令:

solace(configure)# authentication
solace(configure/authentication)# user-class cli
solace(configure/authentication/user-class)# access-level
solace(...uthentication/user-class/access-level)# ldap
solace(...tication/user-class/access-level/ldap)# create group <group-name>

其中:

  • group-name 是 LDAP 服务器上存在的 LDAP 组的名称。LDAP 名称可以包含最多 256 个字母数字字符,但不能包含‘*’或‘?’字符,且第一个字符不能是‘#’。关于组名称的其他注意事项:
    • 如果组名称包含“#”、“+”、“;”、“=”字符,LDAP 服务器可能会返回附加了“\”字符的组名称值。例如,对于组名称“test#,lab,com”,LDAP 服务器可能会返回“test\#,lab,com”。这些特殊字符的确切处理取决于使用的 LDAP 服务器提供商.
    • 要编辑已在事件代理上配置的 LDAP 组的属性,请输入以下 CONFIG 命令:solace(...tication/user-class/access-level/ldap)# group <group-name>.
    • 组名称是区分大小写的,必须与 LDAP 服务器返回的组的大小写匹配.

此命令的 no 版本,no group name <group-name>,会移除给定的组名称.

分配全局访问级别

要为属于给定 LDAP 组的 CLI 用户分配全局访问级别,请输入以下 CONFIG 命令:

solace(...on/user-class/access-level/ldap/group)# global-access-level [none | read-only | mesh-manager | read-write | admin]

其中:

  • none 指定全局访问级别为无.
  • read‑only 指定全局访问级别为只读。默认值为只读.
  • mesh-manager 指定全局访问级别为网格管理器.
  • read-write 指定全局访问级别为读写.
  • admin 指定全局访问级别为管理员.

分配消息VPN默认访问级别

要为属于给定 LDAP 组的 CLI 用户分配消息 VPN 默认访问级别,请输入以下 CONFIG 命令:

solace(...on/user-class/access-level/ldap/group)# message-vpn
solace(...s/access-level/ldap/group/message-vpn)# default-access-level [none|read-only|read-write]

其中:

  • none 指定默认消息 VPN 访问级别为无。默认值为无.
  • read‑only 指定默认消息 VPN 访问级别为只读.
  • read-write 指定默认消息 VPN 访问级别为读写.

配置消息VPN默认访问级别异常

要为属于给定 LDAP 组的 CLI 用户配置默认消息 VPN 访问级别的异常,请输入以下 CONFIG 命令:

solace(c...s/access-level/ldap/group/message-vpn)# create access-level-exception <vpn-name> access-level [none|read-only|read-write]

要修改属于给定 LDAP 组的 CLI 用户的现有默认消息 VPN 访问级别异常,请输入以下 CONFIG 命令:

solace(...lass/access-level/default/message-vpn)# access-level-exception <vpn-name> access-level [none|read-only|read-write]

其中:

  • <vpn-name> 是异常将应用于的 Message VPN 的名称.
  • none 指定消息 VPN 访问级别为无。默认值为无.
  • read‑only 指定消息 VPN 访问级别为只读.
  • read-write 指定消息 VPN 访问级别为读写.

此命令的 no 版本,no access-level-exception,移除任何异常,以便 CLI 用户对所有 Message VPN 具有默认的消息 VPN 访问级别.

允许的消息 VPN 默认访问级别异常数量没有限制,除了不能超过事件代理上存在的 Message VPN 的数量.

配置组成员身份属性名称

要认证 CLI 用户,必须从 LDAP 服务器检索组成员身份属性名称作为 LDAP 搜索的一部分.

属性名称表明 CLI 用户属于 LDAP 服务器上存在的特定组,并通过在 Solace PubSub+ 事件代理上配置的实例引用(请参阅配置 LDAP 组)。例如,对于基于 Active Directory 的 LDAP 服务器,可以使用“memberOf”作为属性名称.

要为用户认证设置组成员身份属性名称,请输入以下 CONFIG 命令:

solace(configure)# authentication
solace(configure/authentication)# user-class cli
solace(configure/authentication/user-class)# access-level
solace(...uthentication/user-class/access-level)# ldap
solace(...tication/user-class/access-level/ldap)# group-membership-attribute-name <attribute-name>

其中:

  • <attribute-name> 是事件代理在搜索响应中尝试从 LDAP 服务器检索的属性名称。属性名称可以包含最多 64 个字母数字字符.

此命令的 no 版本,no group-membership-attribute-name <attribute-name>,会从事件代理中删除 LDAP 组成员身份属性名称。在使用 LDAP 进行 CLI 用户认证时,删除此属性将导致所有未来的 CLI 用户获得默认访问级别(请参阅使用外部认证配置默认 CLI 用户访问级别).

启用LDAP组成员身份二级搜索

典型的 LDAP 服务器部署将组成员身份信息存储在用户记录中,允许立即检索组列表。然而,您也可以使用 LDAP 组成员身份二级搜索,该搜索从用户记录中检索属性,然后使用该属性的值进行二级 LDAP 搜索以检索组列表。默认情况下,LDAP 组成员身份二级搜索未启用.

要使用 LDAP 组成员身份二级搜索,您必须执行以下配置步骤.

CLI 示例修改了名为 default 的 LDAP 配置文件.

步骤 1:指定需要从主搜索中检索的属性.

输入以下 CONFIG 命令:

solace # configure
solace (configure)# authentication
solace (configure/authentication)# ldap-profile default
solace (configure/authentication/ldap-profile)# group-membership-secondary-search
solace (...ile/group-membership-secondary-search)# filter-attribute-from-primary-search <value>

其中:

  • <value> 是主搜索应从 LDAP 服务器检索的属性名称.

步骤 2:为二级搜索过滤器提供替换变量.

当使用二级搜索时,二级搜索过滤器表达式使用替换变量 $ATTRIBUTE_VALUE_FROM_PRIMARY_SEARCH 将主搜索返回的搜索属性值替换为二级搜索过滤器表达式.

输入以下 CONFIG 命令:

solace # configure
solace (configure)# authentication
solace (configure/authentication)# ldap-profile default
solace (configure/authentication/ldap-profile)# group-membership-secondary-search
solace (...ile/group-membership-secondary-search)# filter <filter>

其中:

  • <filter> 是用于在目录服务中定位用户条目的过滤器。事件代理将识别替换变量并用用户的相关信息替换。可以将以下替换变量添加到过滤器中:

    • $ATTRIBUTE_VALUE_FROM_PRIMARY_SEARCH
    • $CLIENT_USERNAME
    • $VPN_NAME

使用替换变量的过滤器示例是 member=$ATTRIBUTE_VALUE_FROM_PRIMARY_SEARCH

步骤 3:为事件代理启用 LDAP 组成员身份二级搜索.

输入以下 CONFIG 命令:

solace# configure
solace(configure)# authentication
solace(configure/authentication)# ldap-profile default
solace(configure/authentication/ldap-profile)# group-membership-secondary-search
solace(...ile/group-membership-secondary-search)# no shutdown
  • LDAP 组成员身份二级搜索仅适用于 CLI/SEMP 用户。客户端用户的认证/授权仅针对主搜索的配置进行.
  • 如果启用了 LDAP 组成员身份二级搜索,则实际上替换了“主”组成员身份查找,后者不再执行.