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

# 用户管理和角色

> 如何在知行之桥中创建和管理用户、角色与权限。

export const siteNameShort = "知行之桥";

export const siteName = "知行之桥";

第一次启动 {siteName} 时，系统会提示你通过设置用户名和密码来创建第一个应用程序用户。第一个用户默认为[管理员角色](#管理员admin角色)，如下所定义。

## 用户

要创建和管理其他用户，请导航至[系统设置页面](./settings-page)，然后前往**用户**选项卡。此选项卡包含所有用户的表格，其中包含用户角色、状态、是否为临时用户、[双因素身份验证 (2FA)](../2fa) 状态等信息。

<img src="https://mintcdn.com/qiao/ilnLy7gsSdFqbKmI/public/images/users_table.png?fit=max&auto=format&n=ilnLy7gsSdFqbKmI&q=85&s=dfbd01a84213715e6133fa6191c27e7b" alt="Users table" width="800" data-path="public/images/users_table.png" />

<Note>如果使用 AD/LDAP 管理用户凭据，则用户名必须采用 `domain\username` 格式。</Note>

管理员角色的成员可以在此选项卡上创建、删除和修改用户。管理员是唯一有权管理其他用户的角色。

### 添加或编辑用户

要添加用户，请点击**添加用户**。要编辑现有用户，请将鼠标悬停在表格中该用户对应的行上，点击省略号，然后选择**编辑**。下图展示了如何向应用程序添加新用户。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/add_user.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=2001c2a540fa1052c7390be3320d7b16" alt="Add a user" width="600" data-path="public/images/add_user.png" />

请填写以下字段：

| 字段         | 描述                                                                         |
| ---------- | -------------------------------------------------------------------------- |
| **用户名**    | 输入用户名。保存用户后，此字段无法更改。                                                       |
| **临时帐户**   | 如果用户仅应拥有临时访问权限，请勾选此项并提供**到期日期**（图中未显示）。                                    |
| **密码**     | 输入密码。请确保密码符合[登录设置](./sign-in-settings)中的要求。勾选**下次登录时需要重置密码**，强制用户在登录时更改密码。 |
| **状态**     | 指示用户处于活跃状态还是非活跃状态。                                                         |
| **电子邮件地址** | 最佳做法是为每个用户提供电子邮件地址，以便他们可以在必要时[重置密码](#密码重置)。                                |
| **角色**     | 选择要分配给用户的[用户角色](#用户角色)。                                                    |

要为新用户授予[系统 API](#系统-api-访问)和/或 OAuth 访问权限，请点击 **API 访问**选项卡。

<img src="https://mintcdn.com/qiao/U-KEZ9JbQY4Wqs1D/public/images/add_user_api_access.png?fit=max&auto=format&n=U-KEZ9JbQY4Wqs1D&q=85&s=492cfd299bcfd4891b82be7849837d8e" alt="Provide Admin or OAuth access" width="600" data-path="public/images/add_user_api_access.png" />

| 字段              | 描述                                                                                                                                           |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **API 访问**      | 勾选**启用系统 API 访问**，将授予用户可用于访问系统 API 的身份验证令牌。详情请参阅[系统 API 访问](#系统-api-访问)。启用 API 访问后，将显示此表中的其余字段。                                              |
| **令牌到期日（天）**    | 令牌到期前的天数。如果你不希望令牌过期，请勾选**无到期日**。                                                                                                             |
| **身份验证令牌**      | 系统生成的身份验证令牌。请确保在保存用户之前将其复制到安全位置，因为它不会再次显示。                                                                                                   |
| **每小时最大请求数**    | 取消选中**无限请求数**可为此用户设置每小时最大请求数限制。                                                                                                              |
| **最大并发请求数**     | 取消选中**无限请求数**可设置可同时发送的最大请求数限制。                                                                                                               |
| **启用 OAuth 访问** | 勾选**启用 OAuth 访问**，将授予用户可用于保护[系统 API](./admin-api-settings)公共 API 端点的凭据。OAuth 2.0 为需要管理令牌生命周期或与外部应用程序集成的客户端提供结构化的身份验证流程。启用 OAuth 访问后，将显示以下字段： |
| **授权类型**        | OAuth 2.0 授权类型，决定客户端应用程序如何获取访问令牌。目前唯一的选项是**客户端凭据**。                                                                                          |
| **客户端 Id**      | 系统生成的客户端 Id 令牌。                                                                                                                              |
| **客户端密钥**       | 系统生成的客户端密钥。请确保在保存用户之前将其复制到安全位置，因为它不会再次显示。                                                                                                    |
| **访问 URL**      | 客户端应用程序使用配置的凭据请求访问令牌的端点 URL。                                                                                                                 |

要添加特定于此用户的受信任或禁止 IP 范围，请点击**受信任 IP 范围**或**禁止 IP 范围**选项卡以添加范围。你可以提供单个 IP 地址、简单范围（例如 `203.0.113.*` 或 `203.0.113.1-255`），或无类别域间路由 (CIDR) 范围。这些选项卡还会显示在**系统设置 > 安全**页面的[网络访问](./network-access)部分定义的全局受信任和禁止范围。

### 单点登录

{siteNameShort} 支持通过实现 OpenID 标准的身份提供商进行单点登录 (SSO)。有关详细信息，包括 Azure AD 的具体指南，请参阅[单点登录](./single-sign-on)。

### 系统 API 访问

每个用户都被授予一个身份验证令牌，可用于访问[系统 API](./admin-api-settings)。有关针对系统 API 进行身份验证的更多信息，请参阅[系统 API 身份验证](../../../admin-api/admin-api-authentication)。

用户可以通过系统 API 执行的具体操作反映了同一用户可以通过 UI 执行的操作。例如，无法通过 UI 删除端口的用户无法使用系统 API 删除端口。要通过系统 API 执行任意操作，请在调用 API 时使用管理员用户的身份验证令牌。

### 密码重置

每个用户都可以将电子邮件地址与其帐户关联。这样，如果需要重置密码，他们可以点击**忘记密码**链接，以便通过电子邮件接收重置链接。每次发送的密码重置都会在[应用程序日志](../activity#application-logs)中添加一行。

没有与帐户关联电子邮件地址的用户必须联系管理员才能重置密码，因此管理员最好将电子邮件地址与每个用户帐户关联。

如果所有管理员用户都被锁定在 {siteNameShort} 之外，每个版本中的嵌入式 Web 服务器提供了重置密码的功能，以重新获得对应用程序的访问权限。此操作需要对安装目录的管理访问权限，且仅在没有可用的有访问权限的用户时才应使用。

例如，在[跨平台版](../../installation/cross-platform-edition)中：

```
java -jar arc.jar -ResetPassword -User <user> -Password <password> -AppDirectory <appDirectory>
```

在 [.NET 版](../../installation/windows-edition)中：

```
CData.Arc.exe -ResetPassword -User <user> -Password <password> -AppDirectory <appDirectory>
```

## 用户角色

**角色**选项卡显示应用程序中定义的所有角色的表格，以及关联的工作区和指向可以承担每个角色的所有用户的链接。角色使你能够限制用户仅在某些工作区中执行某些操作。分配给用户的角色会影响他们在 {siteNameShort} 中看到的所有内容，包括但不限于：

* [工作区](../../../flows/workspaces)
* [报表](../reports)
* [概览数据](../dashboard)
* [日志](../activity)

{siteNameShort} 的每个安装都包含三个内置角色：

* [管理员](#管理员admin角色)
* [普通用户](#普通用户standard角色)
* [业务运维](#业务运维support角色)

这些是无法编辑或删除的全局角色。它们适用于所有工作区。但是，你可以定义[自定义角色](#自定义角色)来限制每个用户的权限。自定义角色由*策略*组成，它对用户在 {siteNameShort} 中可以看到或执行的操作提供最精细的控制。自定义角色还确定用户可以查看哪些工作区并与之交互。

以下部分描述每个内置角色，解释如何定义新策略和角色，并提供示例策略。使用[用户角色比较表](#用户角色比较表)帮助构建你自己的策略和角色。

### 管理员（Admin）角色

**管理员**角色提供对应用程序的完全控制。管理员可以创建新的[工作流](../../../flows)、删除现有工作流、更改[个人设置](../profiles)设置，以及执行控制台支持的所有其他操作。

此外，只有管理员可以查看[审计日志](../activity#audit-logs)，该日志以[防篡改方式](../activity#tamper-evident-logging)记录应用程序中任何用户所做的所有更改。

### 普通用户（Standard）角色

**普通用户**角色的成员可以创建、编辑和删除端口和工作流。但是，他们无法更改任何应用程序范围的设置，例如[个人设置](../profiles)页面中公开的设置。

普通用户可以将新文件上传到工作流中，并且可以上传供端口使用的公共证书。他们无法上传在个人设置中设置的私有证书。

### 业务运维（Support）角色

**业务运维**角色是只读角色；该角色的成员无法创建或删除工作流，也无法更改应用程序设置。**业务运维**用户*可以*使用\_发送\_操作通过现有工作流发送文件，但无法上传新文件（换句话说，他们只能处理端口的**交易**选项卡中已存在的文件）。

### 自定义角色

自定义角色可以更精细地控制每个用户在 {siteNameShort} 中可以查看或执行的操作。自定义角色通过创建策略来定义，这些策略指定该角色成员拥有的确切权限以及他们拥有的证书权限。自定义角色还可以确定用户可以查看和交互的工作区和证书。

#### 创建角色和策略

1. 要创建自定义角色，请导航至[系统设置页面](./settings-page)，然后前往**角色**选项卡。

2. 点击**添加角色**。为角色指定一个有意义的名称和描述，然后点击**添加角色**。

3. 要定义策略，请点击**添加策略**。

4. 使用**工作区权限**和**证书权限**旁边的切换按钮来编辑策略所需的部分。

5. 勾选要分配的策略**允许的工作区操作**和**允许的端口操作**权限旁边的复选框，然后使用**所有工作区**下拉菜单将策略分配给一个或多个工作区。要将其分配给所有工作区，请使用**所有当前和将来的工作区**切换按钮。下图显示了已完成**工作区**和**端口**权限的**策略 1**。

   <img src="https://mintcdn.com/qiao/3lMD3uYuGJqErRlJ/public/images/roles_policy1_complete.png?fit=max&auto=format&n=3lMD3uYuGJqErRlJ&q=85&s=dd5084041c56e96b3bde557df5e9b692" alt="Policy 1 with workspace and connector permissions completed" width="800" data-path="public/images/roles_policy1_complete.png" />

6. 同样，页面的**证书权限**部分允许你控制用户对公有证书和私有证书的操作。勾选要分配的策略证书权限旁边的复选框，然后点击**选择证书**链接，将该策略分配给一个或多个证书。

   <img src="https://mintcdn.com/qiao/3lMD3uYuGJqErRlJ/public/images/roles_certificate_policy.png?fit=max&auto=format&n=3lMD3uYuGJqErRlJ&q=85&s=8933b86b98bc8017aa4d1a3f30f034ef" alt="Certificate policy settings" width="800" data-path="public/images/roles_certificate_policy.png" />

7. 要添加其他策略，请点击**添加策略**并重复前面的步骤。

8. 完成后，点击**保存**。下图显示了具有两个策略的角色。

   <img src="https://mintcdn.com/qiao/3lMD3uYuGJqErRlJ/public/images/roles_policies_complete.png?fit=max&auto=format&n=3lMD3uYuGJqErRlJ&q=85&s=d7ebfd8b866899d3d692f3a50b1a4cdf" alt="Role with two completed policies" width="800" data-path="public/images/roles_policies_complete.png" />

#### 将用户与角色关联

1. 要将用户添加到角色，请点击**关联用户**选项卡。
2. 点击**添加用户**，然后选择可以承担此角色的用户。
3. 完成后，点击**添加用户**。
4. 使用**角色**选项卡查看每个角色的摘要信息，包括关联的工作区和用户。将鼠标悬停在计数上即可查看详细信息。

   <img src="https://mintcdn.com/qiao/3lMD3uYuGJqErRlJ/public/images/roles_complete.png?fit=max&auto=format&n=3lMD3uYuGJqErRlJ&q=85&s=bd9349a291209879a6ad6bd584995f06" alt="Roles tab with associated users and workspaces" width="800" data-path="public/images/roles_complete.png" />

<Note>如果证书策略包含对特定证书子集的访问权限，则受该策略约束的用户可以创建新证书，但创建后无法在端口中查看或列出该证书。这是因为新证书不属于该策略中的证书子集。</Note>

#### 角色和策略示例

设想你的公司有一组 EDI 开发人员。公司有多个贸易伙伴；在这个示例中，我们将使用两个贸易伙伴和两个开发人员。

贸易伙伴工作流分为两个独立的工作区：PartnerA 和 PartnerB。每个 EDI 开发人员（DevA 和 DevB）主要在其对应的工作区（DevA = PartnerA）中工作，但他们还需要能够根据需要在 PartnerB 工作区中查看或发送文件。要管理此操作，你可以创建 DevA 用户，为 DevA 创建自定义角色，然后为该角色分配两个策略，如下图所示。

<img src="https://mintcdn.com/qiao/3lMD3uYuGJqErRlJ/public/images/role_policy_example.png?fit=max&auto=format&n=3lMD3uYuGJqErRlJ&q=85&s=03e125566bce14c7c668ecaeb038d4e6" alt="Role and policy example with two policies assigned" width="800" data-path="public/images/role_policy_example.png" />

* Policy1 为 DevA 提供对 PartnerA 工作区的完全访问权限。
* Policy2 为 DevA 提供对 PartnerB 工作区的有限访问权限，允许他们查看和发送文件，但不能创建或删除端口，也不能修改工作流或设置。

### 用户角色比较表

此表描述了所有类型角色中可用的功能。

| 操作                   | 管理员 | 普通用户 | 业务运维 |   自定义  |
| -------------------- | :-: | :--: | :--: | :----: |
| 修改工作流                |  ✔  |   ✔  |      |    ✔   |
| 更新设置                 |  ✔  |   ✔  |      |    ✔   |
| 删除端口                 |  ✔  |   ✔  |      |    ✔   |
| 创建端口                 |  ✔  |   ✔  |      |    ✔   |
| 上传文件                 |  ✔  |   ✔  |      |    ✔   |
| 发送文件                 |  ✔  |   ✔  |   ✔  |    ✔   |
| 接收文件（在端口的**交易**选项卡上） |  ✔  |   ✔  |   ✔  |    ✔   |
| 删除文件                 |  ✔  |   ✔  |      |    ✔   |
| 删除交易                 |  ✔  |   ✔  |      |    ✔   |
| 重新排队                 |  ✔  |   ✔  |   ✔  |    ✔   |
| 查看端口和工作流             |  ✔  |   ✔  |   ✔  | ✔ [^1] |
| 查看应用程序和交易日志          |  ✔  |   ✔  |   ✔  | ✔ [^1] |
| 将私有证书文件上传到个人设置       |  ✔  |      |      |        |
| 更改个人设置               |  ✔  |      |      |        |
| 查看审计日志               |  ✔  |      |      |        |
| 添加和管理用户              |  ✔  |      |      |        |

[^1]: 必须有权访问工作区才能执行此操作。
