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

- 用户登录请求:用户在登录 API7 企业版时输入其用户名和密码。
- LDAP 验证:API7 企业版将用户提供的凭证传输到 LDAP 服务器进行验证。
- 身份验证:LDAP 服务器验证用户的凭 证是否与 LDAP 目录中存储的用户信息匹配。
- 授权:如果验证成功,LDAP 服务器将授权信息返回给 API7 企业版,系统根据此信息授权用户访问相应的资源。
- 访问资源:用户以经过验证的身份访问 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
创建控制台登录选项
- 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
- 点击 添加登录选项 (Add Login Option)。
- 填写配置:
- 名称 (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
- username:
- 点击 添加 (Add)。
API7 控制台登录页面上现在应该出现一个新的登录选项,允许你使用在 IdP 中创建的用户进行身份验证。用户登录后,以管理员用户身份登录,导航至顶部导航栏中的 组织 (Organization),然后选择 用户 (Users) 以查看该用户。
请注意,该用户尚未分配任何角色,因此缺乏在控制台中管理资源的权限。
在控制台中删除用户会移除其在 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 企业版控制台中配置角色和权限边界映射,以定义如何将来自身份提供商的用户属性转换为访问控制。
启用角色映射
- 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
- 选择该登录选项。
- 启用 角色映射 (Role Mapping)。
- 填写配置:
- 内部角色 (Internal Role):要在 API7 企业版中分配的角色。例如,
Super Admin(超级管理员)。 - 角色属性 (Role Attribute):指向 IdP 中相应属性的 JSONPath。该属性应对应于用户条目中的一个属性,例如
title。 - 操作符 (Operation):用于匹配属性值的比较方法。例如,
Exact Match(精准匹配)。 - 角色值 (Role Value):IdP 属性的值,例如
admin。
- 点击 启用 (Enable)。
现在,所有在 IdP 中 title 属性设置为 admin 的用户将在下次登录时自动被分配 Super Admin(超级管理员)角色。
请注意,角色映射是动态的。如果用户在 IdP 中的属性发生更改,其角色将根据角色 映射规则在下次登录 API7 企业版时自动更新。
启用权限边界映射
- 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
- 选择之前创建的登录选项。
- 启用 权限边界映射 (Permission Boundary Mapping)。
- 填写配置:
- 权限策略 (Permission Policy):要在 API7 企业版中分配的权限策略。例如,你可以创建一个诸如
Admin License Restricted(管理员许可证受限)的策略,该策略授予完全的资源访问权限但限制更新许可证;并将该策略应用于此字段。 - 权限边界属性 (Permission Boundary Attribute):指向 IdP 中相应属性的 JSONPath。该属性应对应于用户条目中的一个属性,例如
title。 - 操作符 (Operation):用于匹配属性值的比较方法。例如,
Exact Match(精准匹配)。 - 权限边界值 (Permission Boundary Value):IdP 属性的值。例如,
admin。
- 点击 启用 (Enable)。
现在,所有在 IdP 中 title 属性设置为 admin 的用户将在下次登录时自动被分配 Admin License Restricted(管理员许可证受限)的权限边界。
请注意,权限边界映射是动态的。如果用户在 IdP 中的属性发生更改,其权限边界将根据映射规则在下次登录 API7 企业版时自动更新。
删除登录选项
删除登录选项将移除在 API7 控制台中与该选项关联的所有用户。
- 从顶部导航栏选择 组织 (Organization),然后选择 用户 (Users)。
- 检查是否仍有用户正在使用该登录选项。如果是,在进行任何更改前通知他们。
- 从顶部导航栏选择 组织 (Organization),然后选择 设置 (Settings)。
- 点击目标登录选项的 删除 (Delete)。