SuiteCRM 8 LDAP 配置

一、介绍

LDAP 身份验证基于 LDAP 的 Symfony 安全组件身份验证器。SuiteCRM 扩展了 Symfony 的一些服务。因此,大多数配置将类似于核心 Symfony 上的配置。

备注:要使用SuiteCRM 8 上面的 LDAP 身份验证,首先你需要在一台服务器上配置 LDAP ,如何配置请参考网址:01-ldap服务部署 ,在bilibili上还有相关的视频。

二、系统管理 > 密码管理:LDAP 身份验证

Suite CRM 8 LDAP 身份验证
Suite CRM 8 LDAP 身份验证

在开始配置 LDAP 之前,请考虑以下事项:

  • 本页部分描述的配置:
    • 不被 v4 或 v8 API 登录使用
    • 不从旧配置中读取
    • 是将 SuiteCRM 登录屏幕配置为使用 LDAP 的方法。不考虑遗留配置
  • SuiteCRM 上可用的 LDAP 配置 系统管理 > 密码管理 菜单仅由旧版 v4 API 使用

这意味着您可能必须使用配置 LDAP.env.local(如以下部分所述)并且,如果要将 v4 与 LDAP 一起使用,还可以使用 系统管理 > 密码管理 您实例的菜单。

三、启用 LDAP 身份验证

要启用 LDAP 身份验证,请更改您的.env.local并设置:

AUTH_TYPE=ldap

四、配置身份验证

SuiteCRM 将一些 Symfony 的 LDAP 配置公开为 env 变量。该.env文件具有所有可用变量的默认值。配置实例时,添加要覆盖的变量.env.local文件。

###> LDAP CONFIG ###
LDAP_HOST=''
LDAP_PORT=389
LDAP_ENCRYPTION=tls
LDAP_PROTOCOL_VERSION=3
LDAP_REFERRALS=false
LDAP_DN_STRING=''
LDAP_QUERY_STRING=''
LDAP_SEARCH_DN=''
LDAP_SEARCH_PASSWORD=''
###< LDAP CONFIG ###

4.1选项说明

LDAP_主机:LDAP 实例的主机

LDAP_端口:LDAP 实例的端口

LDAP_加密:用于连接到 LDAP 的加密类型,可以是:nonetlsssl

LDAP_DN_STRINGDN用于在 LDAP 中标识用户的字符串。它可以有username设置为变量,例如: 'cn={username},dc=example,dc=org'

LDAP_QUERY_STRING:允许设置搜索字符串以搜索用户。找到的DN将是用于验证凭据的那个。

LDAP_SEARCH_DN:另一个用户的 DN,将用于搜索DN.

LDAP_SEARCH_PASSWORD:LDAP_SEARCH_DN 中使用的用户密码

4.2举个例子

###> LDAP CONFIG ###
LDAP_HOST=ldap
LDAP_ENCRYPTION=none
LDAP_DN_STRING='cn={username},dc=example,dc=org'
###< LDAP CONFIG ###

五、切换回SuiteCRM账号密码登录

SuiteCRM 允许使用在 SuiteCRM 实例上为该用户设置的密码回退到本机身份验证。

如果用户有external_auth_only设置为 1(或 true),如果提供的密码与 LDAP 上的密码不匹配或针对 LDAP 的身份验证存在任何其他问题,则登录将失败。

另一方面,如果用户有 external_auth_only设置为 0(或 false)并且针对 LDAP 的身份验证失败,系统将立即尝试针对 SuiteCRM 的本机身份验证进行身份验证。

六、配置用户自动创建

默认情况下,LDAP 禁用用户自动创建。

禁用后,如果您首先在 SuiteCRM 上创建用户,您将只能使用 LDAP 对用户进行身份验证。

如果 SuiteCRM 上尚不存在用户,自动创建选项将自动从 LDAP 创建用户。

请注意,该用户不会在 SuiteCRM 上设置任何密码,并且external_auth_only 默认情况下设置为 1(或 true)

要启用 LDAP 用户自动创建,请更改您的.env.local并设置:

LDAP_AUTO_CREATE=enabled

启用用户自动创建时,您还需要指定在 LDAP 中查找用户所需的配置。

与已经涵盖的其他 LDAP 配置一样,对于用户自动创建,该.env文件还包含您可以覆盖的默认值:

###> LDAP AUTO CREATE CONFIG ###
LDAP_AUTO_CREATE=disabled
LDAP_PROVIDER_BASE_DN=''
LDAP_PROVIDER_SEARCH_DN=''
LDAP_PROVIDER_SEARCH_PASSWORD=''
LDAP_PROVIDER_DEFAULT_ROLES=ROLE_USER
LDAP_PROVIDER_UID_KEY=''
LDAP_PROVIDER_FILTER=''
###< LDAP AUTO CREATE CONFIG ###

6.1选项说明

LDAP_PROVIDER_BASE_DNDN用于搜索用户的基础

LDAP_PROVIDER_UID_KEY:用作 LDAP 条目的属性uid. This is used to but build a query like `({uid_key}={username})

LDAP_PROVIDER_FILTER:选修的。允许在 LDAP 中为用户指定查询搜索。默认过滤器是({uid_key}={username})

LDAP_PROVIDER_SEARCH_DNDN将用于搜索我们当前尝试验证的用户的另一个用户的A。

LDAP_PROVIDER_SEARCH_PASSWORD:LDAP_PROVIDER_SEARCH_DN 中使用的用户密码

LDAP 额外字段

额外字段的配置将用于从 LDAP 获取额外的属性/字段。然后可以使用这些来填充创建的用户记录。

额外字段的配置不是通过 完成的.env。它需要通过覆盖容器参数来完成。这意味着此配置在每个环境中都不容易配置。

额外字段的默认配置定义在config/services/ldap/ldap.yaml.

要覆盖配置,您需要将文件复制到extensions路径上的文件夹extensions/<your-package>/config/services/ldap/ldap.yaml

parameters:
  ldap.autocreate.extra_fields_map:

  ldap.extra_fields: [ ]

从上面请注意,有两个配置条目:

ldap.extra_fields

一个字符串数组,其中包含要检索的 LDAP 条目属性/字段的键。请参阅下一节中的示例。

ldap.autocreate.extra_fields_map

定义如何将 LDAP 字段映射到用户中的字段。请参阅下一节中的示例。

6.2举个例子

LDAP.env.local

###> LDAP AUTO CREATE CONFIG ###
LDAP_PROVIDER_BASE_DN='dc=example,dc=org'
LDAP_PROVIDER_UID_KEY='cn'
LDAP_PROVIDER_SEARCH_DN='cn=admin,dc=example,dc=org'
LDAP_PROVIDER_SEARCH_PASSWORD='admin'
###< LDAP AUTO CREATE CONFIG ###

LDAP ldap.yaml 文件:`extensions/<your-package>/config/services/ldap/ldap.yaml

parameters:
  ldap.extra_fields: [ 'name', 'sn', 'email' ]
  ldap.autocreate.extra_fields_map:
    name: first_name
    sn: last_name
    email: email1

七、使用 Symfony Secrets 

使用 symfony 包和配置的好处之一是我们可以充分利用 Symfony 提供的功能。其中一项功能是 secrets(请参阅以下文档链接)

Symfony secrets 允许我们安全地将敏感值加密存储在“保险库”中。此外,还可以根据环境定义这些值。

在我们的 SAML 配置中,这可用于存储证书和私钥,我们不希望它们易于访问。

要添加机密,请首先按照上的设置步骤开始 Symfony 的文档:如何保密敏感信息

7.1举个例子

设置添加机密所需的所有内容后,您可以更改 LDAP 配置以将一些设置存储在机密中。以下步骤将提供示例。

1. 为您的 LDAP 私钥添加一个secrets

运行:php bin/console secrets:set LDAP_SEARCH_PASSWORD(控制台应显示设置值的提示)

2.清除Symfony缓存

八、清除 symfony 缓存

.env在对或进行任何更改后ldap.yaml你需要清除缓存。

从您的实例根文件夹运行bin/console cache:clear

bin/console cache:clear

如果您无权访问终端,您还可以删除以下内容:/<path-to-your-project>/cache

  • 请确保apache / php 有权写入文件cache
  • 以上不是旧版缓存文件夹。不要删除/<path-to-your-project>/public/legacy/cache

九、更多信息

有关 LDAP 选项的更多信息,请参阅Symfony 的安全组件文档

请确保阅读您的 SuiteCRM 版本上使用的 Symfony 版本的文档

滚动至顶部