Label Studio Enterprise 2.34.2 版本解读:EntraID SCIM 身份供给修复与配置指南
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
Label Studio Enterprise 2.34.2 是一个聚焦于Microsoft Entra ID(原 Azure AD)SCIM 身份供给(Provisioning)修复的补丁版本,发布日期为 2026 年 5 月 14 日,对应 Helm Chart 版本 2.0.5。本文以该版本发布说明为核心,梳理 2.34.x 系列中 SCIM/EntraID 相关问题的修复脉络,并结合仓库中的 SCIM 配置文档、SCIM 工作流文档与核心源码,给出可落地的 EntraID SCIM 配置、属性映射与验证方案,帮助管理员准确理解该补丁修复了什么、以及如何正确完成 SCIM 集成。
版本概览
| 项目 | 内容 |
|---|---|
| 版本号 | Label Studio Enterprise 2.34.2 |
| 发布类型 | 补丁版本(Bug fixes) |
| 发布日期 | 2026 年 5 月 14 日 |
| 版本主题 | EntraID SCIM provisioning 多项问题修复 |
| 对应 Helm Chart | 2.0.5 |
该版本完整发布说明位于 docs/source/guide/release_notes/onprem/2.34.2.md,其核心内容只有一条:
Bug fixes:Fixed multiple issues related to EntraID SCIM provisioning.(修复了与 EntraID SCIM 身份供给相关的多项问题)
虽然单条说明看似简短,但结合相邻版本(2.34.0、2.34.1)的发布说明以及仓库内的 SCIM 文档与源码,可以还原出这次修复的完整上下文:EntraID 的 SCIM 属性映射与组供给(group provisioning)链路在 2.34 系列中经历了多次针对性修复。
2.34.x 系列中 SCIM/EntraID 修复脉络
要理解 2.34.2 修复的内容,需要先看它在 2.34 系列中的位置:
- 2.34.0(2026-04-30):对 SSO/SCIM 设置进行了整体增强。SCIM 设置入口迁移至Organization > Settings > SSO & SCIM,并采用更引导式的设置流程,支持自动 XML/URL 元数据字段映射。同时修复了"邮箱地址大小写不同导致 SSO/SCIM 重复创建账号"的问题。
- 2.34.1(2026-05-11):修复了EntraID SCIM 供给中属性映射与组供给(group provisioning)相关的问题。
- 2.34.2(2026-05-14):进一步修复EntraID SCIM provisioning 的多项问题,即本文主题。
从时间线可以推断,2.34.2 是 2.34.1 之后针对 EntraID SCIM 供给链路的收尾性修复。相关发布说明可分别参见 2.34.1 与 2.34.0。
EntraID SCIM 供给的背景与协议前提
SCIM(System for Cross-domain Identity Management)是跨身份域自动化交换用户身份信息的开放标准。在 Label Studio Enterprise 中,SCIM 用于自动化用户的供给(provisioning)与撤销供给(deprovisioning):添加用户、移除用户(将其角色置为 Deactivated)、把用户分配到组、从组中取消分配、以及将组映射到用户角色。注意:组定义在 IdP 侧,而非 Label Studio 侧;组到角色的映射则在 Label Studio 中配置。
协议层面,Label Studio Enterprise 采用SCIM Version 2.0 标准,遵循 RFC 7644(3.2 节),可与任何支持该标准的访问管理服务集成。详细工作流说明见 scim_workflow.md,集成配置见 scim_setup.md。
前置条件
- SSO 已配置:SCIM 与 SSO 集成交互,需先完成 SSO 配置,参见 auth_setup.md。
- Legacy Token:SCIM 供给需要提供与组织Owner 角色关联的 Legacy token。它必须是 Legacy Token 而非 Personal Access Token,并且必须关联 Owner 角色的用户。在 HTTP 请求头中统一使用
Authorization: Bearer <token>(Label Studio 中Token与Bearer本质是同一类令牌,但 SCIM 场景必须使用Bearer前缀)。
关于 Legacy Token 的调用方式,access_tokens.md 中指出:HTTP API 常规场景使用Authorization: Token头(与 Personal Access Token 的Bearer头不同),而 SCIM 供给场景恰好相反,必须使用Bearer。
EntraID SCIM 配置要点(2.34.2 修复涉及的配置面)
EntraID(原 Azure AD)的 SCIM 配置与 Okta 类似,但对属性映射有严格要求,这正是 2.34.1/2.34.2 连续修复的核心区域。
支持的 SCIM 用户属性(白名单)
Label Studio Enterprise 仅支持以下有限的 SCIM 用户属性集,配置 EntraID 属性映射时只能保留下表列出的属性:
| SCIM 属性 | 描述 | 是否必填 |
|---|---|---|
emails[type eq "work"].value | 用户邮箱地址(主要标识符) | 是 |
userName | 用户名(在 Label Studio 中映射为邮箱) | 是 |
active | 用户是否激活 | 是 |
name.givenName | 用户名字 | 否 |
name.familyName | 用户姓氏 | 否 |
不支持的属性会触发 HTTP 501
官方文档明确警告:映射 Label Studio 不支持的属性将导致 SCIM 供给过程返回 HTTP 501(Not Implemented)错误。因此必须删除 EntraID 默认映射中的多余属性,典型包括:
displayNamepreferredLanguagename.formattedexternalId
EntraID 侧推荐保留的映射
| 目标 SCIM 属性 | 来源(EntraID 表达式) |
|---|---|
emails[type eq "work"].value | userPrincipalName |
userName | userPrincipalName |
active | Switch([IsSoftDeleted], , "False", "True", "True", "False") |
name.givenName | givenName |
name.familyName | surname |
连接配置
在 Microsoft Entra 管理中心的Enterprise apps中完成以下设置:
- 打开企业应用 →Provisioning(供给)。
- Tenant URL设置为
https://<LABEL_STUDIO_BASE_URL>/scim/v2/,其中<LABEL_STUDIO_BASE_URL>为 Label Studio Enterprise 实例的基础 URL。 - Secret Token设置为与 Owner 账号关联的 Legacy token(注意不是 Personal Access Token)。
- 在Mappings下打开Provision Microsoft Entra ID Users,删除除上述白名单外的所有属性映射。
- 如需基于组的角色分配,确保Provision Microsoft Entra ID Groups映射已启用。
- 组供给的 SCIM 组设置(组到角色/工作区/项目的映射)在 Label Studio 的Organization > SCIM页面配置。
组到角色的映射(Label Studio 侧)
在 Label Studio 中通过Organization > SCIM完成三类映射:
- Organization Roles to Groups Mapping(组织角色映射):组织级角色可为 Annotator、Reviewer、Manager、Administrator 或Deactivated(撤销访问权限)。组织级角色是用户的默认角色,会自动分配到工作区与项目。可将多个组映射到同一角色。注意:Not Activated(未激活)或 Deactivated(已停用)的用户不计入账号的席位(seat)限制。
- Workspaces to Groups Mapping(工作区映射):将组添加为工作区成员。Manager、Reviewer、Annotator 角色的用户只有在被添加为工作区成员后才能看到该工作区;可将多个组映射到同一工作区。
- Projects to Groups Mapping(项目映射):项目级角色可为 Annotator、Reviewer 或Inherit(继承组织级角色)。一个组可在不同项目映射不同角色;若选择 Inherit 且继承的是 Not Activated 角色,用户会被映射到项目,但只有在该组完成同步(用户首次认证)后才真正分配到项目。
SCIM 工作流与 API 端点
仓库中的 scim_workflow.md 记录了 SCIM 交互的核心 REST 端点,可用于在升级后验证供给行为是否符合预期:
Users 端点
- 搜索用户:
GET /scim/v2/Users?filter=userName =<user@email.com>&startIndex=1&count=100(存在返回200,不存在返回404) - 获取用户:
GET /scim/v2/Users/user@email.com - 创建用户:
POST /scim/v2/Users/(请求体需包含邮箱、密码等用户信息)
Groups 端点
- 修改组成员:
PUT /scim/v2/Groups/<group-name>,请求体示例:
{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "<group-name>", "displayName": "<group-name>", "members": [ { "value": "<user@email.com>", "display": "<user@email.com>" } ] }- 创建组:
POST /scim/v2/Groups/<group-name> - 获取组:
GET /scim/v2/Groups/<group-name>
SCIM 设置 API
- 获取 SCIM 设置:
GET /api/scim/settings - 更新 SCIM 设置:
POST /api/scim/settings
这些设置同样可在 Label Studio 的Organization > SCIM页面完成。文档同时注明 SCIM API 基于 django-scim2 库 实现。
源码侧实现佐证
仓库中的核心源码可以印证 SCIM 请求在服务端的处理路径:
- 中间件对 SCIM 请求的特殊处理:label_studio/core/middleware.py 中存在
hasattr(request, 'is_scim') and request.is_scim判断,注释说明"scim assign request.user implicitly, check CustomSCIMAuthCheckMiddleware"——即 SCIM 请求会隐式指定请求用户,并由自定义 SCIM 认证检查中间件把关。这解释了为什么 SCIM 供给请求使用 Bearer Legacy Token 即可完成用户/组的增删改操作。 - 中间件注册:label_studio/core/settings/base.py 的中间件列表中注册了
('scim', 'SCIM'),表明 SCIM 认证检查作为独立中间件纳入 Django 请求处理链。 - SCIM 相关功能开关:label_studio/feature_flags.json 中可检索到多个 SCIM 相关的特性开关,如
fflag_feat_bros_836_improving_sso_saml_scim(SSO/SAML/SCIM 改进)、fflag_fix_bros_1496_scim_stale_seats(SCIM 席位残留修复)、fflag_scim_skip_failed_members(跳过失败成员的 SCIM 供给)等。其中"SCIM 席位残留"与"跳过失败成员"这两个开关,从命名上可以推断与 2.34.x 期间 EntraID SCIM 供给的成员同步与席位计数问题直接相关,与 2.34.1/2.34.2 的修复主题一致。
升级与验证建议
结合 2.34.0 的发布说明,升级到 2.34.2 时建议注意以下几点:
- 属性映射白名单核对:升级后务必检查 EntraID 中Provision Microsoft Entra ID Users的映射列表,仅保留前文 5 个受支持属性;若出现
HTTP 501供给错误,首先排查是否存在多余映射。 - Bearer 头与 Legacy Token:确认 Tenant URL 指向
/scim/v2/,Secret Token 为 Owner 角色的 Legacy Token,请求头前缀为Bearer。 - 组供给验证:通过
GET /scim/v2/Groups/<group-name>与GET /scim/v2/Users/<email>验证组与用户是否在服务端正确创建/同步,这也是验证 2.34.2 组供给修复是否生效的最直接手段。 - 历史数据回填提示:2.34.0 引入的共识算法(Consensus)与项目/任务状态(Project and task states)等新特性需要运行回填脚本才能作用于既有数据,且 2.34.0 起
Agreement (Selected)列的相关变更会影响既有 Data Manager 过滤器。若从更早版本升级,需按官方说明执行回填迁移。 - SCIM 设置入口变化:2.34.0 起 SCIM 设置位于Organization > Settings > SSO & SCIM,并在该页面完成引导式配置。
综上,Label Studio Enterprise 2.34.2 是一个聚焦于 EntraID SCIM 供给稳定性的补丁版本。对使用 EntraID 作为身份提供方、依赖 SCIM 自动同步用户与组的企业而言,本次修复的意义在于消除属性映射与组供给链路中的已知缺陷;配合本文梳理的白名单属性、映射表达式与验证端点,管理员即可完成一次正确且可验证的 EntraID SCIM 集成。
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考