Azure AD中使用OIDC与SCIM时的用户唯一标识方案问询
解决Azure AD中SCIM预配与OIDC登录的用户标识匹配问题
核心方案:统一使用Azure AD用户的ObjectId作为唯一标识
Azure AD的ObjectId(对应OIDC令牌中的oid声明)是用户在租户内的全局稳定标识,不会随upn等属性变更而改变,且能同时在SCIM预配和OIDC登录流程中获取,是最佳匹配字段。
1. 调整SCIM预配的属性映射与匹配规则
- 在Azure AD的企业应用预配设置中,修改
externalId的映射:将Azure AD的objectId字段映射到SCIM的externalId属性 - 设置用户匹配规则的优先级:把
externalId作为最高优先级的匹配属性(覆盖默认的userName/upn匹配),确保预配时以ObjectId来识别唯一用户 - 保留
userPrincipalName到SCIMuserName的映射用于展示,但不作为匹配依据
2. OIDC登录时提取oid声明识别用户
- 在OIDC登录流程中,解析ID令牌时直接提取
oid字段,该字段的值就是用户的Azure AD ObjectId - 用这个
oid值与SCIM预配时存储在应用数据库中的externalId(即ObjectId)进行匹配,即可关联到对应的用户记录
补充说明
- 无需额外配置令牌声明:
oid是Azure AD OIDC ID令牌的默认包含字段,解码令牌即可获取,不需要在令牌配置中手动添加 - 规避upn的风险:upn可能因用户邮箱变更等场景修改,因此绝对不能作为长期唯一标识,完全依赖
oid/ObjectId即可避免这个问题
内容的提问来源于stack exchange,提问作者Matt R. Wilson
相关产品推荐
相关产品推荐

