配置用户

自动将您的 SaaS 用户认证到您的 Activepieces 实例

概述

在 Activepieces 中,有项目用户。每个项目都对应您 SaaS 中的工作空间、项目或团队。然后将用户映射到 Activepieces 中的相应用户。

为此,后端将生成一个包含所有必要信息的签名令牌,以自动创建用户和项目。如果用户或项目已存在,将跳过创建并直接登录用户。

您可以通过导航到**平台设置 → 签名密钥 → 生成签名密钥**来生成签名密钥。
这将生成一对公钥和私钥。Activepieces 将使用公钥验证您发送的 JWT 令牌的签名。您将使用私钥签署 JWT 令牌。

<img src="https://mintcdn.com/activepieces/ki8mFooo8mAmhMdP/resources/screenshots/create-signing-key.png?fit=max&auto=format&n=ki8mFooo8mAmhMdP&q=85&s=734855a5e44c784405ce5d0d7cb015db" alt="创建签名密钥" width="1420" height="900" data-path="resources/screenshots/create-signing-key.png" />

<Warning>
  请将私钥存储在安全的地方,因为它不会被保存在 Activepieces 中。
</Warning>
签名密钥将用于为您网站上当前登录的用户生成 JWT 令牌,然后该令牌将作为查询参数发送到 Activepieces iframe,以验证用户身份并将令牌交换为更长有效期的令牌。
要生成这些令牌,您需要在后端添加代码,使用 RS256 算法生成令牌,因此 JWT 头部如下所示:

<Tip>
  要获取 `SIGNING_KEY_ID`,请查看签名密钥表并找到第一列中的值。

  <img src="https://mintcdn.com/activepieces/uHZ35vXyxX7goNO-/resources/screenshots/signing-key-id.png?fit=max&auto=format&n=uHZ35vXyxX7goNO-&q=85&s=eca571e6dfe3d25b77160cc1dbdc8ef2" alt="签名密钥 ID" width="1420" height="900" data-path="resources/screenshots/signing-key-id.png" />
</Tip>

```json theme={null}
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "SIGNING_KEY_ID"
}
```

签名的令牌必须在 payload 中包含以下声明:

```json theme={null}
{
  "version": "v3",
  "externalUserId": "user_id",
  "externalProjectId": "user_project_id",
  "firstName": "John",
  "lastName": "Doe",
  "role": "EDITOR",
  "piecesFilterType": "NONE",
  "exp": 1856563200,
  "tasks": 50000,
  "aiCredits": 250
}
```

| 声明                 | 描述                                                                                                                                                                                 |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| externalUserId       | 用户在**您的**软件中的唯一标识                                                                                                                                                       |
| externalProjectId    | 用户项目在**您的**软件中的唯一标识                                                                                                                                                   |
| projectDisplayName   | 用户项目的显示名称                                                                                                                                                                   |
| firstName            | 用户的名字                                                                                                                                                                           |
| lastName             | 用户的姓氏                                                                                                                                                                           |
| role                 | 用户在 Activepieces 项目中的角色(例如 **EDITOR**、**VIEWER**、**ADMIN**)                                                                                                           |
| exp                  | 令牌的过期时间戳(Unix 时间戳)                                                                                                                                                      |
| piecesFilterType     | 自定义项目 Pieces,请查看[自定义 Pieces](/docs/activepieces/embedding/customize-pieces)                                                                                                                |
| piecesTags           | 自定义项目 Pieces,请查看[自定义 Pieces](/docs/activepieces/embedding/customize-pieces)                                                                                                                |
| tasks                | 自定义用户项目的任务限制                                                                                                                                                             |
| aiCredits            | 自定义用户项目的 AI 信用额度                                                                                                                                                         |
| concurrencyPoolKey   | 池标识符。共享相同键的项目共享相同的并发限制。必须与 `concurrencyPoolLimit` 一起使用。请参阅[管理并发](/docs/activepieces/admin-guide/guides/manage-concurrency)                                         |
| concurrencyPoolLimit | 池的最大并发工作流运行数。必须与 `concurrencyPoolKey` 一起使用。                                                                                                                     |

您可以使用任何 JWT 库来生成令牌。以下是使用 Node.js 中 jsonwebtoken 库的示例:

<Tip>
  **友情提示 #1**:您也可以使用此[工具](https://dinochiesa.github.io/jwt/)快速生成示例。
</Tip>

<Tip>
  **友情提示 #2**:确保过期时间非常短,因为这是临时令牌,将被交换为更长有效期的令牌。
</Tip>

```javascript Node.js theme={null}
const jwt = require('jsonwebtoken');

// JWT NumericDates 以秒为单位指定:
const currentTime = Math.floor(Date.now() / 1000);
let token = jwt.sign(
  {
    version: "v3",
    externalUserId: "user_id",
    externalProjectId: "user_project_id",
    firstName: "John",
    lastName: "Doe",
    role: "EDITOR",
    piecesFilterType: "NONE",
    exp: currentTime + (60 * 60), // 从现在起 1 小时
  },
  process.env.ACTIVEPIECES_SIGNING_KEY,
  {
    algorithm: "RS256",
    header: {
      kid: signingKeyID, // 在头部中包含 "kid"
    },
  }
);
```

生成令牌后,请查看嵌入文档以了解如何在 iframe 中嵌入令牌。