跳到主要内容
版本:3.9.x

使用 LDAP 配置控制台 SSO

单点登录 (SSO) 允许用户使用一组凭证访问多个应用程序,从而简化身份验证过程。在 API7 企业版中,SSO 支持多种协议,并提供了从现有身份提供商 (IdP) 导入并管理用户的能力。

Architecture of LDAP

  1. 用户登录请求:用户在登录 API7 企业版时输入其用户名和密码。
  2. LDAP 验证:API7 企业版将用户提供的凭证传输到 LDAP 服务器进行验证。
  3. 身份验证:LDAP 服务器验证用户的凭证是否与 LDAP 目录中存储的用户信息匹配。
  4. 授权:如果验证成功,LDAP 服务器将授权信息返回给 API7 企业版,系统根据此信息授权用户访问相应的资源。
  5. 访问资源:用户以经过验证的身份访问 API7 企业版,无需重新输入凭证。

本指南将引导你使用 LDAP 协议为 API7 企业版控制台配置单点登录 (SSO),并为导入的用户设置角色和权限边界的映射。

设置 SSO 集成

本节将指导你使用 LDAP 协议为 API7 企业版控制台配置单点登录 (SSO)。

配置 LDAP 服务器

定义目录结构。规划你的基础 DN (Base DN) 和组织单位 (OUs)。例如:

# Base DN: dc=example,dc=com

# Root entry
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Company
dc: example

# LDAP admin account (used as Bind DN)
dn: cn=read-only-admin,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: read-only-admin
sn: Admin
uid: read-only-admin
userPassword:: e1NTSEF9JGFsdGhvdmVyJGFsdGhvdmVy
mail: admin@example.com

# User accounts
dn: uid=alice,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: alice
cn: Alice Johnson
sn: Johnson
mail: alice.johnson@example.com
telephoneNumber: 555-123-4567

dn: uid=bob,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: bob
cn: Bob Smith
sn: Smith
mail: bob.smith@example.com
telephoneNumber: 555-234-5678

# Group entry
dn: ou=admins,dc=example,dc=com
objectClass: top
objectClass: groupOfUniqueNames
ou: admins
cn: Admins
uniqueMember: uid=alice,dc=example,dc=com
uniqueMember: uid=bob,dc=example,dc=com

创建控制台登录选项

  1. 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
  2. 点击 添加登录选项 (Add Login Option)。
  3. 填写配置:
  • 名称 (Name):唯一的登录名称。该名称应易于用户识别。例如,如果你将名称配置为 Employee Account,你将在控制台登录页面看到 Login with Employee Account(使用员工账号登录)选项。
  • 提供商 (Provider):选择 LDAP
  • 主机 (Host):LDAP 主机域名,例如 ldap.example.com
  • 端口 (Port):LDAP 服务器端口,例如 389 (非 SSL) 或 636 (SSL)。
  • 基础 DN (Base DN):定义 LDAP 目录树根目录的可分辨名称 (DN),用户搜索将从此处开始,例如 dc=example,dc=com
  • 绑定可分辨名称 (Bind Distinguished Name):用于执行 LDAP 用户搜索的可分辨名称,例如 cn=read-only-admin,dc=example,dc=com。该账号必须具有读取或搜索被认证用户的权限。
  • 绑定密码 (Bind Password):LDAP 客户端在连接到 LDAP 服务器时,作为绑定 DN(用户账号)进行身份验证所使用的凭证。
  • 标识符 (Identifier):用于识别 LDAP 用户的属性,例如 uid
  • 属性映射 (Attributes Mapping):API7 用户字段映射到 LDAP 属性。例如:
    • username: uid
    • email: mail
    • name: cn
  1. 点击 添加 (Add)。

API7 控制台登录页面上现在应该出现一个新的登录选项,允许你使用在 IdP 中创建的用户进行身份验证。用户登录后,以管理员用户身份登录,导航至顶部导航栏中的 组织 (Organization),然后选择 用户 (Users) 以查看该用户。

请注意,该用户尚未分配任何角色,因此缺乏在控制台中管理资源的权限。

important

在控制台中删除用户会移除其在 API7 控制台中分配的所有角色和权限边界,但该用户仍然可以作为新用户登录。若要完全撤销对 API7 控制台的访问权限,必须从 IdP 中移除该用户。

管理用户角色和权限

启用自动映射后,导入的用户可以根据其来自身份提供商的属性(如头衔、职位或部门)自动分配角色和权限边界。这些角色和权限边界在用户每次登录时进行同步,确保访问权限的一致性。一个登录选项的映射可以包含多个规则,这些规则共同决定用户的访问权限。

信息

如果你更喜欢手动为用户更新角色和权限边界(最适合临时调整),请参阅 更新用户角色设置权限边界

自动映射优先于手动修改的角色和权限边界。当映射处于活动状态时,控制台中的手动更改将在用户下次登录时被覆盖。

配置 LDAP 服务器

角色和权限边界映射依赖于在 IdP 中配置并传递给 API7 企业版的值。相同的 IdP 配置适用于设置角色和权限边界的映射。

例如,要将属性分配给用户,你可以将其配置为用户属性或通过组成员身份进行配置。

提示

在生产环境中,建议实施细粒度的权限控制。例如,你可以在 API7 中创建详细的权限并将其绑定到一个角色,然后使用 API7 登录选项设置将每个 LDAP 用户属性显式映射到相应的 API7 角色。最后,在 LDAP 服务器中为每个用户分配适当的属性,以确保适当的访问控制。

配置为用户属性

为以后应具有 API7 管理员角色的用户分配一个属性,例如 title,其值为 admin。这些用户的 LDIF 条目应类似于以下内容:

dn: uid=alice,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Alice Johnson
sn: Johnson
uid: alice
mail: alice.johnson@example.com
telephoneNumber: 222-123-4567
title: admin

在 API7 控制台中,你可以使用 title, Exact Match, admin 作为映射规则。有关配置步骤,请参阅在控制台中配置映射

通过组成员身份配置

假设你有一个类似于以下的 admins 组:

dn: ou=admins,dc=example,dc=com
objectClass: top
objectClass: groupOfUniqueNames
ou: admins
cn: Admins
uniqueMember: uid=alice,dc=example,dc=com
uniqueMember: uid=bob,dc=example,dc=com

启用 memberOf 模块,以便用户的 LDAP 条目自动包含一个 memberOf 属性,反映他们所属的所有组。OpenLDAP 默认未启用此选项。启用该模块后,每个用户条目将自动包含一个 memberOf 属性,列出他们所属的组,例如:

dn: uid=alice,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Alice Johnson
sn: Johnson
uid: alice
mail: alice.johnson@example.com
telephoneNumber: 222-123-4567
memberOf: ou=admins,dc=example,dc=com

在 API7 控制台中,你可以使用 memberOf, Contains String, admins 作为映射规则。有关配置步骤,请参阅在控制台中配置映射

在控制台中配置映射

本节描述如何在 API7 企业版控制台中配置角色和权限边界映射,以定义如何将来自身份提供商的用户属性转换为访问控制。

启用角色映射

  1. 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
  2. 选择该登录选项。
  3. 启用 角色映射 (Role Mapping)。
  4. 填写配置:
  • 内部角色 (Internal Role):要在 API7 企业版中分配的角色。例如,Super Admin(超级管理员)。
  • 角色属性 (Role Attribute):指向 IdP 中相应属性的 JSONPath。该属性应对应于用户条目中的一个属性,例如 title
  • 操作符 (Operation):用于匹配属性值的比较方法。例如,Exact Match(精准匹配)。
  • 角色值 (Role Value):IdP 属性的值,例如 admin
  1. 点击 启用 (Enable)。

现在,所有在 IdP 中 title 属性设置为 admin 的用户将在下次登录时自动被分配 Super Admin(超级管理员)角色。

请注意,角色映射是动态的。如果用户在 IdP 中的属性发生更改,其角色将根据角色映射规则在下次登录 API7 企业版时自动更新。

启用权限边界映射

  1. 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
  2. 选择之前创建的登录选项。
  3. 启用 权限边界映射 (Permission Boundary Mapping)。
  4. 填写配置:
  • 权限策略 (Permission Policy):要在 API7 企业版中分配的权限策略。例如,你可以创建一个诸如 Admin License Restricted(管理员许可证受限)的策略,该策略授予完全的资源访问权限但限制更新许可证;并将该策略应用于此字段。
  • 权限边界属性 (Permission Boundary Attribute):指向 IdP 中相应属性的 JSONPath。该属性应对应于用户条目中的一个属性,例如 title
  • 操作符 (Operation):用于匹配属性值的比较方法。例如,Exact Match(精准匹配)。
  • 权限边界值 (Permission Boundary Value):IdP 属性的值。例如,admin
  1. 点击 启用 (Enable)。

现在,所有在 IdP 中 title 属性设置为 admin 的用户将在下次登录时自动被分配 Admin License Restricted(管理员许可证受限)的权限边界。

请注意,权限边界映射是动态的。如果用户在 IdP 中的属性发生更改,其权限边界将根据映射规则在下次登录 API7 企业版时自动更新。

删除登录选项

注意

删除登录选项将移除在 API7 控制台中与该选项关联的所有用户。

  1. 从顶部导航栏选择 组织 (Organization),然后选择 用户 (Users)。
  2. 检查是否仍有用户正在使用该登录选项。如果是,在进行任何更改前通知他们。
  3. 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
  4. 点击目标登录选项的 删除 (Delete)。

附加资源