连接属性映射用于告诉 identity:当外部身份提供商返回用户字段时,应该如何把这些字段写入标准用户属性、可写的自定义属性,或者权威部门归属。
连接属性映射是“按连接保存”的规则,用来决定上游登录资料怎样落到 identity。
典型目标包括:
- 把提供商字段 mail 写入 identity 的 email
- 把提供商字段 employeeId 写入某个自定义资料字段
- 写入固定值,例如 custom.source_system=provider_a
每条规则都挂在某一个连接上,并在联邦登录运行时针对上游用户资料执行。
当前控制面 IDL 在以下连接家族上显式暴露了 AttributeMappings:
每条映射规则都使用 IdpAttributeMapping 结构。
示例结构:
当前连接模型支持三类映射类型。
TargetAttributeName 决定写到哪里。
控制面会对简写目标名做归一化:
这意味着:
- 如果裸写的目标名恰好是合法的 OIDC 标准声明,identity 会把它当成 user.<claim>
- 否则,identity 会把它当成 custom.<name>
运行时会根据本页列出的 OIDC 标准声明校验 user.* 目标。
custom.<name> 目标必须同时满足:
- 该自定义属性定义已经存在于目标 UserPool
- 该自定义属性的 Schema 可变性必须是 Mutable
如果自定义属性存在,但其可变性是 AdminMutable 或 Immutable,identity 会拒绝把它作为属性映射目标。
system.department_assignment 只能用于 DEPARTMENT_ASSIGNMENT。
规则包括:
- 只能与 MappingType=DEPARTMENT_ASSIGNMENT 一起使用
- 必须提供 SourceAttributeName
SourceAttributeName 表示 identity 从上游载荷哪里读取值。
常见路径模式:
运维注意点:
- emails[0].value 这类旧式数组下标写法也是支持的
- 如果源路径不存在,这条规则会被跳过,而不是让整批映射直接失败
HARDCODED_VALUE 的 AdditionalConfig
HARDCODED_VALUE 通过 AdditionalConfig 携带 JSON。
必需格式如下:
value 键是必需的。空值或非法 JSON 都会被控制面拒绝。
连接映射是通过对应连接家族的创建或更新 API 写入的。
先决定数据应该落到:
- 自定义属性,例如 custom.department
- 部门归属规则 system.department_assignment
如果目标是自定义属性,请先在目标池里创建对应的自定义属性定义。
可结合 自定义属性 Schema 确认字段存在且 Mutability=Mutable。
第三步:在连接创建或更新请求中写入 AttributeMappings
OIDC 创建请求片段示例:
OIDC 更新请求片段示例:
通过对应家族的 GetIdentityProvider* API 读取连接,确认返回结果里的 AttributeMappings 是否符合预期。
把提供商字段 mail 映射到 identity email
如果提供商 A 返回的是 mail,但 identity 里要落到标准邮箱字段:
最终等效目标:user.email
把提供商字段 displayName 映射到 identity name
把提供商字段 employeeId 映射到自定义属性 employee_id
前提:目标池里已经存在可写的 employee_id 自定义属性。
如果所有从 provider A 过来的用户都应该写入 custom.source_system=provider_a:
把嵌套字段 profile.department.name 映射到部门自定义字段
最终等效目标:custom.department
如果 provider A 返回了权威的部门外部 ID 或 ID 列表:
这类规则不会写普通用户字段或自定义字段,而是把解析结果当作部门外部 ID 来应用部门成员关系。
如果旧的 SAML 连接仍在使用遗留的 AttributeMapping 字符串字段,建议把新规则迁移到 AttributeMappings,这样所有连接家族就能统一使用同一种映射模型。