Label Studio Enterprise SSO/SAML 认证配置指南:从 IdP 接入到组映射与权限下发
2026/9/10 12:38:09 网站建设 项目流程

Label Studio Enterprise SSO/SAML 认证配置指南:从 IdP 接入到组映射与权限下发

【免费下载链接】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 的 SAML 单点登录(SSO)配置展开,说明如何将已有的身份提供商(Identity Provider,IdP)接入 Label Studio,实现基于组织角色的统一认证与授权管理。读完本文,你将掌握从 Label Studio 与 IdP 两侧完成 SAML 对接的完整步骤、SAML 属性与预设映射规则、三种组映射(角色/工作区/项目)的配置方法,以及通过环境变量收紧为"纯 SSO 管理"的进阶方案。

适用版本说明:SSO 认证仅在 Label Studio Enterprise Edition 中提供。若使用 Label Studio Community Edition,可参考 Label Studio 功能对比 了解两个版本的能力差异。

为什么需要 SSO/SAML

在企业环境中,用户通常已在统一的身份体系(如 Okta、Microsoft Entra ID、Google Workspace)中维护账号。通过 SAML 将 Label Studio Enterprise 配置为 Service Provider(SP),可以让用户使用企业既有账号登录标注平台,免去重复注册与密码管理。更重要的是,SSO 打通后可以结合 管理用户访问 的能力,把 SAML 中的用户组(Groups)映射到 Label Studio 的rolesworkspaces,实现"身份在 IdP 维护、权限在平台自动同步"的治理模型。

支持的 Identity Provider

Label Studio Enterprise 支持以下 IdP:

  • Okta
  • Google SAML
  • Ping Federate 与 Ping Identity SAML SSO 配置示例
  • OneLogin
  • Microsoft Entra ID(原 Azure Active Directory / Azure AD)
  • Auth0
  • 其他使用标准 SAML 断言(SAML assertions)的 IdP

配置权限说明:只有组织OwnerAdministrator角色的用户才能为实例设置 SSO & SAML。

配置 SAML SSO 的完整流程

整体流程分为三步:先在 Label Studio 侧复制必要 URL,再到 IdP 侧完成应用注册与属性映射,最后返回 Label Studio 上传 IdP 元数据并配置组映射。具体细节因 IdP 而异,但通用步骤如下。

第一步:从 Label Studio 获取接入信息

  1. 进入Organization页面(若页面上看不到Organization选项,说明当前登录账号不具备相应角色)。
  2. 在页面右上角选择SSO & SAML
  3. Organization字段中,确保域名与 IdP 中组织使用的域名一致。
  4. 复制以下三个 URL,供 IdP 侧配置使用:
URL作用
Assertion Consumer Service (ACS) URL(含 Audience/EntityID 与 Recipient/Reply 信息)IdP 在认证成功后用来将用户重定向回 Label Studio
Login URL用户登录 Label Studio 时使用的入口地址
Logout URL用户登出 Label Studio 后被重定向的地址

从源码结构看,Label Studio 的 SAML 服务端路由集中在/saml/<token>/命名空间下:acs(断言消费)、welcome(登录欢迎页)、denied(拒绝页)、loginlogoutxml(元数据下发),相关模式定义在 middleware.py,并有对应的中间件测试覆盖(见 test_middleware.py)。这些路由即 ACS URL、Login URL、Logout URL 对应的后端处理端点。

第二步:在 IdP 侧完成应用接入与属性映射

  1. 将上一步从 Label Studio 复制的 URL 粘贴到 IdP 应用配置的对应位置。
  2. 生成 IdP 的元数据 XML 文件,或提供指定元数据的 URL(供 Label Studio 拉取)。
  3. 设置或确认以下 SAML 属性映射。Label Studio Enterprise 依赖这些特定属性来识别用户身份。

默认属性名:

数据默认属性
邮箱地址Email
名(given name)FirstName
姓(family name)LastName
组名Groups

不同 IdP 的属性名并不统一。Label Studio 在 SSO & SAML 设置页提供了presets(预设),可一键为常见 IdP 配置正确的属性映射;若 IdP 使用其他属性名,也可手动配置自定义属性。

各 IdP 的属性预设:

IdPEmailFirstNameLastNameGroups
DefaultEmailFirstNameLastNameGroups
Auth0emailgiven_namefamily_namegroups
Entra ID (short)emailAddressgivenNamesurnamegroups
GoogleEmailFirstNameLastNameGroups
PingOneemailAddressgivenNamesurnameGroups
OktaemailfirstNamelastNamegroups

Microsoft Entra ID 完整 URI 格式:

若 Entra ID 使用默认的 claim URI,可按下表配置:

属性URI
Emailhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
FirstNamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
LastNamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
Groupshttp://schemas.microsoft.com/ws/2008/06/identity/claims/groups

第三步:返回 Label Studio 上传元数据并配置组映射

  1. 回到 SSO & SAML 页面。
  2. 上传 IdP 的 metadata XML 文件,或指定 metadata URL。
  3. 配置组映射(也可稍后添加或编辑)。关键要求:填写的组名必须与 IdP 在 SAML 认证响应中作为属性发送的组名完全一致。

Label Studio Enterprise 提供三种层级的组映射:

  • Organization Roles to Groups Mapping(组织角色映射):在组织级别将组映射为角色。组织级别的角色是用户的默认角色,会自动分配到工作区和项目。可配置说明见 Label Studio Enterprise 中的角色。多个组可以映射到同一角色;处于Not Activated(未激活)或Deactivated(已停用)状态的用户不计入账户的席位(seat)上限。
  • Workspaces to Groups Mapping(工作区映射):将组作为成员加入工作区。Manager、Reviewer、Annotator 角色的用户只有在被加入某工作区后才能看到该工作区。可以选择已有工作区或新建工作区,多个组可以映射到同一工作区。
  • Projects to Groups Mapping(项目映射):在项目级别将组映射为角色,项目级角色可为AnnotatorReviewerInherit。一个组可以在多个项目中映射为不同角色,多个组也可以映射到同一项目和同一角色。若选择Inherit,该组将继承上文Organization Roles to Groups Mapping中设置的角色;若继承的是 Not Activated 角色,用户虽被映射到项目,但只有在组被同步(即用户通过 SSO 完成认证)后才会真正被分配到项目。
  1. 点击Save保存配置。
  2. 使用 SSO 账号登录 Label Studio Enterprise 验证配置是否生效。

仅使用 SSO 管理用户访问

如果希望完全通过单点登录来管理 Label Studio 的角色与工作区,可在环境变量文件中加入以下配置:

MANUAL_PROJECT_MEMBER_MANAGEMENT=0 MANUAL_WORKSPACE_MANAGEMENT=0 MANUAL_ROLE_MANAGEMENT=0

设置这些选项后,Label Studio 的 API 与 UI 中针对具体用户的角色、工作区分配功能将被禁用,权限完全依赖环境变量文件中的配置(即 IdP 侧下发的组与上述组映射规则)。这也是 LDAP 场景下的同一套管理开关,相关说明可见 LDAP 认证配置。

从发布历史可以佐证这些变量的实际行为:2.3.1 版本的更新说明中提到,MANUAL_WORKSPACE_MANAGEMENT设为 false 时曾出现"用户登录时 SAML 工作区被重置"的问题并已修复(见 2.3.1 发布说明),说明该变量直接影响 SAML 登录时工作区成员关系的同步逻辑。

补充说明:

  • 若使用 Label Studio Enterprise Cloud(SaaS 版)并希望为组织启用上述限制,需提交工单申请;如有需要,也可申请禁用通用登录(common login)选项——禁用后用户只能使用 SSO 登录字段,通用登录入口被彻底关闭。
  • SSO 配置完成后,用户仍可通过原生认证(普通登录)访问 Label Studio UI,但官方不推荐这样做,尤其对 Owner 角色用户而言。
  • 可通过DISABLE_SIGNUP_WITHOUT_LINK选项阻止用户自行创建组织。该选项在 用户管理文档 中有详细说明:设置LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true后,用户只能通过邀请链接或邮件注册,无法通过/user/signup页面自行创建账号。对应源码实现位于 base.py(环境变量解析,默认False)与 users/views.py(注册时校验组织 token)。

自定义登录页 URL

可设置LOGIN_PAGE_URL环境变量,将登录页重定向到指定 URL。该变量适合启用白标(white labeling)的组织,或存在多个内部团队、不同团队使用不同 IdP 登录(或部分团队不使用 IdP)的场景,参见 2.21.0 发布说明。

从源码看 SAML 在 Label Studio 中的定位

在 Django 配置中,SAML 是角色来源(Role Source)之一。源码中定义了角色来源枚举(见 base.py),包括manual(手动)、samlscimldapapibilling等来源,这意味着用户角色可被标记为"由 SAML 下发",与手动分配、SCIM、LDAP 等方式并行管理、互不冲突。结合上文的环境变量开关,可以推断:当MANUAL_ROLE_MANAGEMENT=0时,平台屏蔽手动/API 层面的角色分配入口,角色只能源自 SAML 等外部身份同步通道。

配置要点与注意事项汇总

  • 组名必须与 IdP 实际下发的Groups属性值完全一致,否则映射不生效。
  • 组织域名需与 IdP 中的组织域名保持一致。
  • 属性名与 IdP 不一致时优先使用页面预设,其次手动配置自定义属性名;Entra ID 需注意短格式与完整 URI 格式的区别。
  • 未激活/已停用用户不计席位;继承 Not Activated 角色的组需在用户完成 SSO 认证(组同步)后才真正进入项目。
  • SSO 与普通登录可以并存,但出于安全考虑官方不推荐;可通过LOGIN_PAGE_URL与禁用 common login 进一步收口登录入口。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询