Authn.tech
首页
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • JWT / JOSE
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • GraphQL
  • SCIM 2.0
  • 国内平台 SSO
  • 工具总览
  • JWT 解析
  • JWT 签名
  • JWK 生成
  • JWK → PEM
  • PEM → JWK
  • PKCE 生成
  • OIDC Discovery
  • 扫码登录演示
  • TOTP
  • WebAuthn
  • SAML 编解码
  • SAML Metadata
  • SAML Response
  • 飞书 SAML
  • X.509 证书
  • PEM 解析
  • Base64URL
  • LDAP 过滤器
  • 概览 / 角色术语
  • OIDC Mock
  • SAML Mock
  • 邮件服务器
  • LDAP 目录
  • OIDC 登录演示
  • SAML 登录演示
  • 微信扫码登录
  • 企业微信扫码登录
  • 简体中文
  • English
  • Deutsch
GitHub
首页
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • JWT / JOSE
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • GraphQL
  • SCIM 2.0
  • 国内平台 SSO
  • 工具总览
  • JWT 解析
  • JWT 签名
  • JWK 生成
  • JWK → PEM
  • PEM → JWK
  • PKCE 生成
  • OIDC Discovery
  • 扫码登录演示
  • TOTP
  • WebAuthn
  • SAML 编解码
  • SAML Metadata
  • SAML Response
  • 飞书 SAML
  • X.509 证书
  • PEM 解析
  • Base64URL
  • LDAP 过滤器
  • 概览 / 角色术语
  • OIDC Mock
  • SAML Mock
  • 邮件服务器
  • LDAP 目录
  • OIDC 登录演示
  • SAML 登录演示
  • 微信扫码登录
  • 企业微信扫码登录
  • 简体中文
  • English
  • Deutsch
GitHub
  • SCIM 2.0

    • SCIM 2.0 概述
    • SCIM 资源与 Schema
    • SCIM 协议操作
    • SCIM 安全实现
    • SCIM 2.0 速查

SCIM 资源与 Schema

User

User 的核心 schema URI 是:

urn:ietf:params:scim:schemas:core:2.0:User

典型资源:

{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
  ],
  "id": "2819c223-7f76-453a-919d-413861904646",
  "externalId": "hr-10086",
  "userName": "[email protected]",
  "name": {
    "formatted": "张三",
    "familyName": "张",
    "givenName": "三"
  },
  "displayName": "张三",
  "emails": [
    { "value": "[email protected]", "type": "work", "primary": true }
  ],
  "active": true,
  "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
    "employeeNumber": "10086",
    "department": "研发部",
    "manager": { "value": "manager-resource-id" }
  },
  "meta": {
    "resourceType": "User",
    "version": "W/\"a330bc54f0671c9\"",
    "location": "https://example.com/scim/v2/Users/2819c223"
  }
}

userName 是 User 的必需标识属性,但“登录名是否等于邮箱”属于服务策略,不应自行假定。姓名、邮箱、电话等多值属性可以带 type、primary 和 display 等子属性。

Group

Group 的核心 schema URI 是:

urn:ietf:params:scim:schemas:core:2.0:Group

displayName 是必需属性,members 包含成员资源引用:

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
  "displayName": "研发部",
  "members": [
    {
      "value": "2819c223-7f76-453a-919d-413861904646",
      "$ref": "https://example.com/scim/v2/Users/2819c223",
      "type": "User"
    }
  ]
}

成员的 value 是服务端 SCIM 资源 id,不能直接把 HR 员工号或邮箱当作成员 ID。组是否映射为产品角色或资源权限属于产品策略,必须单独文档化。

id、externalId 与业务标识

属性谁分配作用
idService Provider服务内稳定、不可变、不可重用的资源标识
externalIdClient客户端供应域中的关联标识,帮助跨系统匹配
userName通常由 Client 提供服务内用于标识用户,要求和规范特征由 schema 给出
企业扩展 employeeNumberClient业务员工号,不应代替服务端 id

可靠接入通常保存 externalId ↔ id 映射。首次供应前使用明确的匹配规则查重,不能只按可变邮箱自动合并账号,更不能跨租户匹配。

Schema URI 与扩展

每个资源的 schemas 数组列出该资源实际使用的 schema URI。标准企业用户扩展为:

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

自定义扩展应使用组织控制的唯一 URI,并通过 /Schemas 和 /ResourceTypes 公开。不要把自定义字段直接塞到核心 User 顶层,也不要重定义标准属性的类型或语义。

属性特征

SCIM schema 会声明属性的关键特征:

特征示例含义
type / multiValued字符串、布尔、复杂类型以及是否多值
required创建或表示资源时是否必需
mutabilityreadOnly、readWrite、immutable 或 writeOnly
returnedalways、never、default 或 request
uniquenessnone、server 或 global
caseExact字符串比较是否区分大小写
canonicalValues规范建议的常用值集合

客户端应根据服务端发现结果适配能力,服务端不能接受后悄悄改变值却不返回可判断的错误。

发现端点

一个可互操作的服务应提供:

  • /ServiceProviderConfig:PATCH、Bulk、filter、sort、认证方式等能力;
  • /ResourceTypes:资源类型、端点、核心 schema 与扩展;
  • /Schemas:schema 与属性定义。

客户端不应仅靠厂商页面或试错猜测能力。发现响应也需要认证或最小化公开信息,以免泄露租户自定义 schema 和安全配置。

最近更新: 2026/7/28 07:29
贡献者: linux
Prev
SCIM 2.0 概述
Next
SCIM 协议操作