LDAP 单点登录¶
LDAP(Lightweight Directory Access Protocol) 是一种用于处理各种目录服务的应用程序协议。Microsoft Entra ID 通过 Microsoft Entra 域服务 (AD DS) 支持该模式。
观测云部署版支持已拥有 LDAP 服务的用户通过该协议一键登录。以下为一些必要的配置字段:
字段 | 描述 |
---|---|
host |
LDAP 服务器域名,支持的格式: |
port |
服务端口,host 中的端口默认覆盖该参数。 |
baseDN |
基础目录位置。参考【字段概念补充】 |
bindDN |
与 LDAP 服务建立链接时用于验证的 用户名信息(DN 接口)。 |
searchAttribute |
搜索其他账号时,用来过滤账号的条目名。该条目名将与用户输入的用户名组成一个 DIT 条目信息。(该值能够根据用户名确认唯一用户) |
bindPassword |
与 LDAP 服务建立链接时用于验证的密码信息。 |
mapping |
账号属性中需要映射到观测云的属性字段映射信息。 LDAP 中给出的账号属性对应的属性值一般都是列表;在观测云中如果属性值为数组/列表结构,则默认取第一个元素作为值进行处理。参考【字段概念补充 > 2.账号属性字段】 |
字段概念补充
-
目录信息树(DIT):DIT 是一个分层结构,类似于文件系统。要标识条目,您必须在 DIT 中指定其路径,从表示条目的叶开始一直到树的顶部。该路径称为条目的可分辨名称(DN);
- 条目的可分辨名称(DN):由条目的名称和值的键值对(以逗号分隔)构成,构成从叶子到树顶部的路径。条目的 DN 在整个 DIT 中是唯一的,并且仅当条目移动到 DIT 内的另一个容器中时才会更改
-
账号属性字段:
观测云中的账号属性 | 观测云侧字段说明 | LDAP 服务侧提供的账号属性,经 ldap3 转换之后的属性(默认字段) |
---|---|---|
username |
认证服务中,登录账号的邮箱字段名,必填 | mail |
email |
认证服务中,登录账号的用户名字段名,必填,如果值不存在,则取 email |
uid |
mobile |
认证服务中,登录账号的手机号字段名,选填 | mobile |
exterId |
认证服务中,登录账号的唯一标识字段名, 必填 | uid |
配置详情¶
在观测云 Launcher 命名空间:forethought-core > core 中添加如下配置,需注意调整配置变量值:
# LDAP 客户端配置(配置主体参考: https://ldap3.readthedocs.io/en/latest/server.html)
LDAPClientSet:
# 是否启用 LDAP, 默认不启用
enable: false
# server 的参数格式遵循 https://ldap3.readthedocs.io/en/latest/server.html
server:
# LDAP 服务器域名,可以是域名 或者 ldap://xxx 或者 ldaps://xxx
host: "ipa.demo1.freeipa.org"
# 链接超时时间
connect_timeout: 6
# 控制是否启用 ssl
use_ssl: false
# 指定是否必须读取服务器架构和服务器特定信息(默认为 SCHEMA)。可选值说明 https://ldap3.readthedocs.io/en/latest/server.html#server-object
get_info: "SCHEMA"
tls:
# 默认值无; 包含客户端私钥的文件路径
local_private_key_file:
# 默认值无; 服务器的证书的文件路径
local_certificate_file:
# 默认值无; 包含证书颁发机构证书的文件路径
ca_certs_file:
# 默认值无; 指定必须使用哪些密码器的字符串。它适用于最新的Python解释器,允许更改SSLContext或wrap_socket()方法中的密码,在旧版本中它被忽略。默认值无
ciphers:
# 指定是否必须验证服务器证书,可选值:CERT_NONE(忽略证书)、CERT_OPTIONAL(不是必需的,但如果提供则进行验证)和 CERT_REQUIRED(必需并验证)
validate: "CERT_REQUIRED"
# 要使用的 SSL 或 TLS 版本,可以是以下之一:SSLv2、SSLv3、SSLv23、TLSv1(根据 Python 3.3。版本列表在其他 Python 版本中可能不同), 当前默认 TLS 1.2
version: "PROTOCOL_TLSv1_2"
connection:
# 默认值无; 访问 Active Directory:使用 ldap3,您还可以使用 NTLM v2 协议连接到 Active Directory 服务器, 则此处可以设置为 NTLM
authentication:
# authentication、sasl_mechanism 和 sasl_credentials 在此处应遵循 https://ldap3.readthedocs.io/en/latest/bind.html?highlight=Active%20Directory#digest-md5
# 默认值无; 访问 Active Directory 时, sasl_mechanism 可以为 DIGEST_MD5; 默认值无
sasl_mechanism:
# 访问 Active Directory 情况下, 需要
# 要使用 DIGEST-MD5 机制,您必须传递 4 值或 5 值元组作为 sasl_credentials:(领域、用户、密码、authz_id、enable_signing)。如果不使用,您可以为 'realm'、'authz_id' 和 'enable_signing' 传递 None:
sasl_credentials:
# 是否在建立标准链接之上启用 tls; 如果为 true,则与ldap建立链接之后会检查并启用 tls,
startTls: false
baseDN: "dc=demo1,dc=freeipa,dc=org"
bindDN: "uid=admin,cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org"
bindPassword: "Secret123"
# 搜索账号所用到的属性; 方式一: `searchAttribute: uid` 只标记属性字段名; 方式二: `searchAttribute: "(uid={username})"` 自定义过滤语句, 此方式下括号和花括号中的 username 是必须的。
# 注意,如果是 AD 用户,则一般设置为 sAMAccountName
searchAttribute: "uid"
# 搜索账号时,账号信息对应的类名。注意,如果对接方为 微软AD 上的 LDAP 则此处应为 persion;
# 确认方式,安装`ldapsearch`(第三方 ldap 链接工具),执行命令 `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN信息" -w "bindPassword信息" -b "baseDN内容" "(cn=目标用户)"` 返回结果中的 objectClass 即为可选列表
personObjectClass: "inetOrgPerson"
mapping:
# 认证服务中,登录账号的用户名字段名,必填,如果值不存在,则取 email
username: uid
# 认证服务中,登录账号的邮箱字段名,必填
email: mail
# 认证服务中,登录账号的手机号字段名,选填
mobile: mobile
# 认证服务中,登录账号的唯一标识字段名, 必填
exterId: uid
不开启 SSL 的情况下,内网访问 LDAP 服务配置示例:
# LDAP 客户端配置(配置主体参考: https://ldap3.readthedocs.io/en/latest/server.html)
LDAPClientSet:
# 是否启用 LDAP, 默认不启用
enable: true
# server 的参数格式遵循 https://ldap3.readthedocs.io/en/latest/server.html
server:
# LDAP 服务器域名,可以是域名 或者 ldap://xxx 或者 ldaps://xxx
# 本地开发地址 绑定hosts: 172.16.211.111 openldap-server
host: "<域名 、 协议+域名+端口>"
# 指定是否必须读取服务器架构和服务器特定信息(默认为 SCHEMA)。可选值说明 https://ldap3.readthedocs.io/en/latest/server.html#server-object
get_info: "ALL"
# 基础 DN信息
baseDN: "<基础DN>"
# 客户端建立连接时绑定的的DN
bindDN: "<客户端建立连接时绑定的DN>"
# 与 bindDN 对应的密码
bindPassword: "<与 bindDN 对应的密码>"
# 搜索账号所用到的属性
searchAttribute: cn
# 搜索账号时,账号信息对应的类名。注意,如果对接方为 微软AD 上的 LDAP 则此处应为 persion;
# 确认方式,安装`ldapsearch`(第三方 ldap 链接工具),执行命令 `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN信息" -w "bindPassword信息" -b "baseDN内容" "(cn=目标用户)"` 返回结果中的 objectClass 即为可选列表
personObjectClass: "inetOrgPerson"
# 如果账号属性与下表不一致,则需要调整
mapping:
# 认证服务中,登录账号的用户名字段名,必填,如果值不存在,则取 email
username: cn
# 认证服务中,登录账号的邮箱字段名,必填
email: mail
# 认证服务中,登录账号的手机号字段名,选填
mobile: mobile
# 认证服务中,登录账号的唯一标识字段名, 必填
exterId: cn
使用 LDAP 单点登录至观测云¶
以上配置添加完毕后,即可使用 LDAP 单点登录到观测云。
1)打开观测云部署版登录地址,在登录页面选择 LDAP 登录;
2)输入在 LDAP server 使用的用户名与密码;
3)登录到观测云对应的工作空间。