SCIM 与 Okta

配置从 Okta 到 Activepieces 的 SCIM 用户供应。

此功能仅适用于付费版本。如有需要,请联系我们

前置条件

开始之前,请确保你拥有:

  • 管理员权限可访问你的 Activepieces 平台
  • 管理员权限可访问你的 Okta 租户
  • 已配置 SSO(推荐):SAML 与 Okta
  • 已从 Activepieces 应用的 /platform/security/api-keys 路径生成 API 密钥

在 Okta 中配置 SCIM 连接

在 Okta 管理控制台中,打开你的 Activepieces 应用程序(在第一个 [SSO 步骤](/docs/activepieces/admin-guide/guides/sso#saml-with-okta)中创建)。 在应用的 **General** 标签页中,启用 **SCIM Provisioning**。
<img src="https://mintcdn.com/activepieces/Jz9nlyeTn6NzuJkR/resources/screenshots/scim/okta/enable-provisioning.png?fit=max&auto=format&n=Jz9nlyeTn6NzuJkR&q=85&s=40c716c7db9458c2abf5b69c69c0b165" alt="Okta 用户预配" width="1332" height="1406" data-path="resources/screenshots/scim/okta/enable-provisioning.png" />
将出现 **Provisioning** 选项,进入并设置:
* **SCIM base URL** 设置为 `https://your-activepieces-domain/api/v1/scim/v2`
* **Unique identifier field** 设置为 `userName`
* **Authentication mode** 设置为 `HTTP Header`
* **Authorization** 设置为 `Bearer <generated-api-key>`

<Tip>
  在支持的预配操作中,我们支持所有 **Push** 操作。
</Tip>
点击 **Test Connector Configuration** 并确认测试通过。
Okta SCIM 连接图

配置属性映射

Provisioning -> To App -> Attribute Mappings 中,映射以下字段:

Activepieces (SCIM)Okta 值
userNameuser.email
givenNameuser.firstName
familyNameuser.lastName
emailuser.email
displayNameuser.displayName

平台角色映射

默认情况下,已预配的用户将拥有平台的 Member 角色。要在 Okta 中为用户指定角色,请按照以下步骤操作:

在 Okta 管理控制台中,导航至 **Directory -> Profile Editor -> Your-Application User**。 点击 **Add Attribute** 并填写表单:
| 字段              | 值                                                                 |
| ----------------- | ------------------------------------------------------------------ |
| `Display name`    | `platformRole`                                                     |
| `Variable name`   | `platformRole`                                                     |
| `External name`   | `platformRole`                                                     |
| `External namespace` | `urn:ietf:params:scim:schemas:activepieces:1.0:CustomUserAttributes` |
| `Enum`            | `enabled`                                                          |

对于 **Attribute members**,添加:

| 显示名称     | 值        |
| ------------ | --------- |
| `ADMIN`      | `ADMIN`   |
| `MEMBER`     | `MEMBER`  |
| `OPERATOR`   | `OPERATOR`|

<img src="https://mintcdn.com/activepieces/Jz9nlyeTn6NzuJkR/resources/screenshots/scim/okta/add-attribute.png?fit=max&auto=format&n=Jz9nlyeTn6NzuJkR&q=85&s=70f70664423a6b54d0795b3d9f10d203" alt="Okta 添加属性图" width="696" height="1328" data-path="resources/screenshots/scim/okta/add-attribute.png" />

最后点击保存。
此步骤假设你的 Okta 用户资料中已有可以映射到 Activepieces 用户资料中的 platformRole 的字段。如果没有,你可以在 **Directory -> Profile Editor -> User (default)** 中创建一个新字段。
* 返回 Activepieces 应用页面,进入 **Provisioning -> To App -> Attribute Mappings**

* 向下滚动并点击 **Show Unmapped Attributes**

* 编辑 `platformRole` 字段

* 在这里你需要从 Okta 用户资料中映射属性值。如果你在 Okta 用户资料中已经有一个角色字段,其值与 platformRole 的值(`ADMIN`、`MEMBER`、`OPERATOR`)完全匹配,那么你可以使用 `Map from Okta Profile` 选项直接选择它。否则,你可以使用[表达式](https://developer.okta.com/docs/reference/okta-expression-language/)基于 Okta 用户资料中的其他字段返回这三个角色之一。

以下是一个表达式示例:

<img src="https://mintcdn.com/activepieces/Jz9nlyeTn6NzuJkR/resources/screenshots/scim/okta/role-expression.png?fit=max&auto=format&n=Jz9nlyeTn6NzuJkR&q=85&s=62b00ad1a43ec2e5c45bb129ca34d0a1" alt="Okta 角色表达式示例" width="1630" height="790" data-path="resources/screenshots/scim/okta/role-expression.png" />

<Warning>
  请确保返回值始终是 `ADMIN`、`MEMBER` 或 `OPERATOR` 之一。
</Warning>

预配和取消预配用户

预配

在 Activepieces 应用页面中,进入 Provisioning -> To App 并启用当 Okta 中发生变更时要应用于 Activepieces 的操作。

Okta 角色表达式示例

现在在 Assignments 标签页中,你可以:

  • 选择预配单个用户或组。请注意,Okta 中的组将成为 Activepieces 中的项目。

  • 如果你没有组,并且想一次预配所有 Okta 用户,你可以分配 Everyone 组。

  • 在分配的组(包括 Everyone)中编辑/创建用户时,他们应该在 Activepieces 中更新。

  • 要将组推送到 Activepieces,请进入 Push groups 标签页,点击推送按钮,找到该组并保存。

用户在项目中的默认角色为 `Editor` 角色,目前无法将项目角色与 Okta 关联。 Okta 角色表达式示例 在 Activepieces 中创建的用户将收到一封欢迎邮件。点击后,他们将被重定向以使用 `SAML` 登录。

取消预配

仅当用户在 Okta 中被停用时,他们在 Activepieces 中的状态才会切换为 INACTIVE。由于 Okta 的设计,Okta 中的挂起或删除操作不会反映到 Activepieces。

对于组,你可以在 Push groups 标签页中删除它们 -> 点击 Push Status 列中的按钮 -> Unlink pushed group -> 删除目标中的组。

删除组将删除 Activepieces 中的整个项目,包括其工作流和连接。与该组关联的用户不会受到影响。

故障排查

* 确认 SCIM 基础 URL 正确。 * 确保 `Authorization` 标头使用 `Bearer` 格式。 * 确保用户已分配到 Okta 应用。 * 确认 Okta 中已启用预配操作。 * 在 **Provisioning -> To App** 中重新检查映射。 * 确保 `userName` 使用稳定的唯一值(通常是电子邮件)。