一、介绍
LDAP 身份验证基于 LDAP 的 Symfony 安全组件身份验证器。SuiteCRM 扩展了 Symfony 的一些服务。因此,大多数配置将类似于核心 Symfony 上的配置。
备注:要使用SuiteCRM 8 上面的 LDAP 身份验证,首先你需要在一台服务器上配置 LDAP ,如何配置请参考网址:01-ldap服务部署 ,在bilibili上还有相关的视频。
二、系统管理 > 密码管理: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 的加密类型,可以是:none、tls或ssl
LDAP_DN_STRING:DN
用于在 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_DN:DN
用于搜索用户的基础
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_DN:DN
将用于搜索我们当前尝试验证的用户的另一个用户的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 版本的文档