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

# 单点登录

> 通过单点登录实现一次登录，访问多个关联应用，提高工作效率并增强安全性

Flashduty 支持 SAML2.0、OIDC、CAS 和 LDAP（仅私有化版本）协议的单点登录（SSO）接入，帮助您轻松集成到各种应用和平台中。用户只需登录一次，便可访问多个关联的应用程序和服务，无需重复身份验证。

## 配置 SAML 协议

***

**配置路径**：平台管理 → 单点登录 → 开启 → 设置 → 选中 SAML2.0 协议类型

| 字段                | 描述                                                                                       |
| ----------------- | ---------------------------------------------------------------------------------------- |
| 协议类型              | 选择 SAML2.0                                                                               |
| 元数据文档             | 通过身份提供商获取的 XML 文档                                                                        |
| 字段映射              | Flashduty 通过映射字段从身份提供商提取用户邮箱、用户名和手机信息                                                    |
| 登录即创建账号           | 默认开启，关闭后需要先邀请成员才可登录                                                                      |
| Flashduty 服务提供商信息 | **Service Provider Metadata** 和 **Assertion Consumer Service URL**（断言地址，用于身份提供商调用进行单点登录） |

## 配置 OIDC 协议

***

**配置路径**：平台管理 → 单点登录 → 开启 → 设置 → 选中 OIDC 协议类型

| 字段                | 描述                                                                                                                  |
| ----------------- | ------------------------------------------------------------------------------------------------------------------- |
| 协议类型              | 选择 OIDC 协议                                                                                                          |
| Issuer            | 从身份提供商获取，大小写敏感的 URL，不能包含 query 参数                                                                                   |
| Client ID         | 客户端 ID，从身份提供商获取                                                                                                     |
| Client Secret     | 客户端密钥，从身份提供商获取                                                                                                      |
| 字段映射              | Flashduty 通过映射字段从身份提供商提取用户邮箱、用户名和手机信息                                                                               |
| 登录即创建账号           | 默认开启，关闭后需要先邀请成员才可登录                                                                                                 |
| Scopes            | 指定请求可访问的信息和功能权限，支持自定义。默认值为 `openid`、`profile`、`email`、`phone`，支持以标签形式添加自定义 Scope                                    |
| Flashduty 服务提供商信息 | **Redirect URL**：身份提供商回调地址<br />**支持签名算法**：RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512（不支持 HS256） |

<Warning>
  Scopes 为必填字段。默认值 `openid`、`profile`、`email`、`phone` 是 OIDC 协议正常工作所需的基础权限。删除这些默认值可能导致单点登录失败或无法正确获取用户信息。如需添加自定义 Scope，建议在保留默认值的基础上追加。
</Warning>

## 配置 CAS 协议

***

**配置路径**：平台管理 → 单点登录 → 开启 → 设置 → 选中 CAS 协议类型

| 字段                | 描述                                                                                           |
| ----------------- | -------------------------------------------------------------------------------------------- |
| 协议类型              | 选择 CAS 协议                                                                                    |
| CAS 地址            | 从身份提供商获取的 CAS 服务地址，如 `https://xqlsd3irx2gm-demo.authing.cn/cas-idp/669e050856d5b07b4399b242` |
| CAS 登录路径          | CAS 登录路径，如 `/login`                                                                          |
| 跳过 TLS 检查         | 可选项，启用后将跳过 TLS 证书验证，适用于使用自签名证书的 CAS 服务                                                       |
| 字段映射              | Flashduty 通过映射字段从身份提供商提取用户邮箱、用户名和手机信息                                                        |
| 登录即创建账号           | 默认开启，关闭后需要先邀请成员才可登录                                                                          |
| Flashduty 服务提供商信息 | **Redirect URL**：身份提供商回调地址                                                                   |

## 配置 LDAP 协议

***

<Note>
  LDAP 单点登录仅**私有化版本**支持。
</Note>

**配置路径**：平台管理 → 单点登录 → 开启 → 设置 → 选中 LDAP 协议类型

| 字段         | 描述                                                                                                     |
| ---------- | ------------------------------------------------------------------------------------------------------ |
| 协议类型       | 选择 LDAP 协议                                                                                             |
| LDAP 链接    | LDAP 服务地址，如：`ldap://10.10.10.10:389`                                                                   |
| BIND DN    | 用于连接 LDAP 的用户名，如：`cn=admin,dc=flashduty,dc=com`                                                        |
| BIND DN 密码 | 用于连接 LDAP 的密码，将加密存储到数据库中                                                                               |
| 加密机制       | 支持 **TLS** 和 **StartTLS** 两种加密方式（二者互斥，只能启用一种）。启用任一加密方式后，可选择 **跳过 SSL/TLS 证书验证**；如不跳过，可选填写 SSL/TLS 证书路径 |
| 用户 DN      | 定义从哪个目录开始搜索用户，如：`ou=people,dc=flashduty,dc=com`                                                        |
| 认证过滤       | 用于检索用户 DN 信息的自定义 filter 表达式，基本形式为：`(&(mail=%s))`。注意：开始和结束的括号是必须的                                       |
| 字段映射       | Flashduty 通过映射字段从身份提供商提取用户邮箱、用户名、手机和 Group 信息。邮箱为必填映射字段，Group 字段默认值为 `memberOf`，用于角色和团队同步              |
| 登录即创建账号    | 默认开启，关闭后需要先邀请成员才可登录                                                                                    |

<Tip>
  字段映射需要和身份提供商的配置保持一致，否则会导致异常。具体配置可参考 [OpenLDAP 集成指引](/zh/on-call/integration/sso/openldap)。
</Tip>

### LDAP 连接检测

配置 LDAP 连接信息后，你可以点击设置抽屉底部的 **连接检测** 按钮，验证 Flashduty 能否成功连接到你的 LDAP 服务器。系统会使用当前填写的 LDAP 链接、BIND DN 和密码尝试建立连接，并返回连接成功或失败的结果。

<Tip>
  建议在保存配置前先执行连接检测，确保连接参数正确无误，避免因配置错误导致成员无法通过 LDAP 登录。
</Tip>

### LDAP 角色和团队同步

当你使用 LDAP 协议时，可以根据用户所属的 LDAP Group 自动同步 Flashduty 中的角色和团队。

**配置路径**：LDAP 设置页面 → 同步配置

<Steps>
  <Step title="启用同步">
    在同步配置区域，分别开启 **同步角色** 和/或 **同步团队** 开关。
  </Step>

  <Step title="添加映射规则">
    点击 **添加映射规则**，为每条规则配置以下内容：

    | 字段           | 说明                                                                            |
    | ------------ | ----------------------------------------------------------------------------- |
    | **Group DN** | LDAP 中 Group 的完整 Distinguished Name，如 `cn=devops,ou=groups,dc=example,dc=com` |
    | **映射角色**     | 当同步角色开启时可选，选择该 Group 对应的 Flashduty 角色                                         |
    | **映射团队**     | 当同步团队开启时可选，选择该 Group 对应的 Flashduty 团队                                         |
  </Step>

  <Step title="配置默认角色">
    当同步角色开启时，你可以配置 **默认角色**。当用户的 LDAP Group 未匹配到任何映射规则时，系统将赋予这些默认角色。
  </Step>
</Steps>

<Note>
  * 你可以添加多条映射规则，每条规则对应一个 LDAP Group
  * 用户登录时，系统会根据其 LDAP Group 成员关系自动匹配并同步对应的角色和团队
  * 映射规则中的 Group DN 必须是 LDAP 中 Group 的完整路径
</Note>

## 外部成员管理

***

当您启用单点登录后，通过 SSO 首次登录并自动创建的成员会被标记为**外部成员**。您可以在 SSO 设置中开启**禁止编辑外部成员**选项（默认关闭），启用后，这些外部成员在 Flashduty 中将变为只读状态——无法在 Flashduty 中修改其角色或删除该成员，所有成员信息的管理只能通过身份提供商完成。

此功能适用于需要统一在身份提供商中管理用户权限的场景，确保 Flashduty 中的成员信息始终与身份提供商保持一致。

<Note>
  * 该选项仅影响通过 SSO 创建的外部成员，手动邀请的成员不受影响
  * 如果 SSO 配置被删除，已存在的外部成员将默认保持只读状态
</Note>

## 登录域名管理

***

登录域名是识别您的主体账号的重要依据，用于单点登录时定位到正确的 SSO 配置。每个主体的登录域名全局唯一。

配置登录域名后，成员可以通过 `{域名}.sso.flashcat.cloud` 地址直接发起单点登录，无需手动选择身份提供商。

您可以在 **平台管理 → 基本信息** 页面修改主体账号的域名。修改域名时请注意，域名只能使用 5–40 位字母、数字或 `-`，且不能以 `-` 开头或结尾。

<Warning>
  修改域名后，该域名将应用于以下场景：

  * **SSO 单点登录配置**：所有已配置的 SSO 登录域名会随之变更，成员需要使用新域名发起单点登录
  * **邮件集成推送的邮箱地址**：邮件集成的接收地址格式为 `prefix@{域名}.{邮箱后缀}`，域名变更后地址也会随之变化，请及时更新相关配置

  修改前请确认已检查邮件集成配置，并在组织内进行了通报。修改操作可能需要通过多因素认证（MFA）验证。如在使用过程中遇到任何问题，请及时联系技术支持。
</Warning>

<Note>
  * 建议使用公司英文名称作为登录域名，便于记忆
  * 登录域名一旦设置，变更后原域名将立即失效，使用旧域名的成员需要更新登录地址
</Note>

## 最佳实践

***

<CardGroup cols={3}>
  <Card title="Authing 集成" icon="shield-check" href="/zh/on-call/integration/sso/authing">
    通过 Authing 配置 Flashduty SSO 单点登录
  </Card>

  <Card title="Keycloak 集成" icon="key" href="/zh/on-call/integration/sso/keycloak">
    通过 Keycloak 配置 Flashduty SSO 单点登录
  </Card>

  <Card title="OpenLDAP 集成" icon="server" href="/zh/on-call/integration/sso/openldap">
    通过 OpenLDAP 配置 Flashduty SSO 单点登录
  </Card>
</CardGroup>
