配置用户
自动将您的 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>
要生成这些令牌,您需要在后端添加代码,使用 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 中嵌入令牌。