跳转至

LDAP 单点登录

LDAP(Lightweight Directory Access Protocol) 是一种用于处理各种目录服务的应用程序协议。Microsoft Entra ID 通过 Microsoft Entra 域服务 (AD DS) 支持该模式。

观测云部署版支持已拥有 LDAP 服务的用户通过该协议一键登录。以下为一些必要的配置字段:

字段 描述
host LDAP 服务器域名,支持的格式:
  • 域名
  • 带协议的地址:ldap://xxx & ldaps://xxx
  • port 服务端口,host 中的端口默认覆盖该参数。
    baseDN 基础目录位置。参考【字段概念补充】
    bindDN 与 LDAP 服务建立链接时用于验证的 用户名信息(DN 接口)。
    searchAttribute 搜索其他账号时,用来过滤账号的条目名。该条目名将与用户输入的用户名组成一个 DIT 条目信息。(该值能够根据用户名确认唯一用户)
    bindPassword 与 LDAP 服务建立链接时用于验证的密码信息。
    mapping 账号属性中需要映射到观测云的属性字段映射信息。

    LDAP 中给出的账号属性对应的属性值一般都是列表;在观测云中如果属性值为数组/列表结构,则默认取第一个元素作为值进行处理。参考【字段概念补充 > 2.账号属性字段】
    字段概念补充
    1. 目录信息树(DIT):DIT 是一个分层结构,类似于文件系统。要标识条目,您必须在 DIT 中指定其路径,从表示条目的叶开始一直到树的顶部。该路径称为条目的可分辨名称(DN);

      • 条目的可分辨名称(DN):由条目的名称和值的键值对(以逗号分隔)构成,构成从叶子到树顶部的路径。条目的 DN 在整个 DIT 中是唯一的,并且仅当条目移动到 DIT 内的另一个容器中时才会更改
    2. 账号属性字段:

    观测云中的账号属性 观测云侧字段说明 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)登录到观测云对应的工作空间。

    更多阅读

    文档评价

    文档内容是否对您有帮助? ×