> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 单点登录

> 让用户通过 OIDC、SAML 2.0 或 LDAP 登录，把他们的用户组映射为角色，并限制可以加入工作区的邮箱域名。

单点登录让用户使用企业目录中的账号登录，而不必使用 MoleSignal 密码。打开 **身份与访问 → SSO 服务商** 和 **邮箱域名**。读取服务商与域名需要 `org.settings.read`，修改需要 `org.settings.manage`。

## 添加服务商之前

把 `[http].external_url` 设置为 MoleSignal 的公开地址。OIDC 的 **Redirect URI** 和 SAML 的 **Assertion Consumer URL（ACS）** 都由它派生，身份提供方需要回调这两个地址。服务商配置保存在数据库中，无需重启即可生效。

## 添加服务商

1. 打开 **SSO 服务商**，点击 **新建服务**。
2. 填写 **名称** 并选择 **类型**：**OIDC**、**SAML** 或 **LDAP**。
3. 填写该类型的配置。
4. 映射身份字段和角色。参见[身份字段映射](#身份字段映射)与[角色绑定](#角色绑定)。
5. 点击 **创建服务**。

| 类型 | 配置 |
| - | - |
| OIDC | **Issuer URL**、**Authorization URL**、**Token URL**、**UserInfo URL**、**JWKS URL**、**Client ID**、**Client Secret**，以及以空格分隔的 **Scopes**。用 **复制 Redirect URI** 复制表单显示的 **Redirect URI**，并在身份提供方中把它配置为允许的回调地址。 |
| SAML | **SP Entity ID**、**IdP Entity ID**、**IdP SSO URL** 和 **IdP 签名证书（PEM）**。用 **复制 ACS 地址** 复制表单显示的 **Assertion Consumer URL（ACS）**，并配置到身份提供方中。 |
| LDAP | **LDAP 服务地址**：`ldaps://`，或开启 **StartTLS** 的 `ldap://`。**用户 Base DN**，例如 `ou=people,dc=example,dc=com`。包含 `{username}` 的 **用户查询过滤器**，查询前会对输入值转义。**查询账号 Bind DN** 及其 **查询账号密码**：只有目录允许匿名查询时才可以同时留空。 |

编辑服务商时，**Client Secret** 或 **查询账号密码** 留空会保留已保存的值。

## 身份字段映射

**身份字段映射** 告诉 MoleSignal 从哪里读取一个人的四个字段：

| MoleSignal 字段 | OIDC | SAML | LDAP |
| - | - | - | - |
| **稳定主体标识** | Claim，支持 `realm_access.roles` 这类点分路径。 | Attribute Name，或用 `NameID` 读取断言主体。 | 属性，或用 `dn` 读取条目的 DN。 |
| **邮箱** | Claim。 | Attribute Name。 | 属性。 |
| **显示名称** | Claim。 | Attribute Name。 | 属性。 |
| **用户组** | Claim。 | Attribute Name。 | 属性。 |

没有有效邮箱的登录会被拒绝。

## 角色绑定

**认证平台用户组 → 本平台角色** 列出从 **用户组** 的值到 MoleSignal 角色的映射。点击 **添加映射**，填写 **认证平台用户组值**（例如 `platform-admins`）并选择角色。一个人会获得所有命中映射对应的角色，角色在每次登录时同步。

没有映射命中时使用 **默认角色**；未指定默认角色时，使用自助加入的角色。

## 登录时发生什么

登录页为每个已启用的服务商显示一个按钮。使用 LDAP 服务商时，先在表单中输入目录用户名和密码，再点击该服务商的按钮。

1. 服务商确认身份，MoleSignal 读取映射的字段。
2. 尚无 MoleSignal 账号的人，在邮箱通过工作区的[邮箱域名](#邮箱域名)检查后会自动获得账号。
3. 还不是成员的人，以映射得到的角色或默认角色加入服务商所在的工作区。
4. 对已有成员，命中映射的角色会替换之前的角色。已停用的账号无法登录。

## 管理服务商

列表显示每个服务商的类型、是否启用以及更新时间。

| 操作 | 效果 |
| - | - |
| **编辑** | 修改配置与映射。 |
| **停用** / **启用** | 停用的服务商会从登录页消失，并拒绝登录。 |
| **删除** | 删除服务商，依赖它的用户将无法再通过它登录。 |

## 邮箱域名

**邮箱域名** 限制哪些邮箱地址可以通过[邀请](https://docs.molesignal.com/zh-Hans/identity/members.md#邀请)或单点登录加入工作区。点击 **添加域名** 并填写域名，例如 `example.com`。列表为空时，任何地址都可以加入。**删除** 从列表中移除一个域名。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.