如何通过Graph API在Azure B2C中预创建联合身份用户
Azure B2C预创建带外部联邦身份用户操作方案
创建用户时直接配置联邦身份
调用Graph API的POST /users接口,在请求体中直接携带完整的identities数组即可完成预创建,注意每个身份条目必须完整包含signInType、issuer、issuerAssignedId三个必填字段,你提供的示例存在引号缺失、逗号缺失的语法问题,修正后的请求体示例如下:
{ "displayName": "User Name", "givenName": "User", "surname": "Name", "userType": "Member", "accountEnabled": true, "passwordProfile": { "forceChangePasswordNextSignIn": false, "password": "符合B2C复杂度要求的临时密码" }, "userPrincipalName": "cpim_uuid@mytenant.onmicrosoft.com", "identities":[ { "signInType" : "federated", "issuer": "https://login.company.com/auth/realms/realm-qt", "issuerAssignedId" : "user.name@company.com" }, { "signInType" : "userPrincipalName", "issuer": "mytenant.onmicrosoft.com", "issuerAssignedId" : "cpim_uuid@mytenant.onmicrosoft.com" } ] }
为已存在用户新增联邦身份
如果对应账号已经在B2C租户中创建,调用PATCH /users/{用户ID/用户主体名称}接口更新identities字段即可,注意:identities是全量覆盖字段,更新时必须携带该用户所有已存在的身份条目+新增的联邦身份条目,否则原有身份标识会被直接删除,请求体示例如下:
{ "identities":[ // 保留原有所有身份条目 { "signInType" : "userPrincipalName", "issuer": "mytenant.onmicrosoft.com", "issuerAssignedId" : "cpim_uuid@mytenant.onmicrosoft.com" }, // 新增的联邦身份条目 { "signInType" : "federated", "issuer": "https://login.company.com/auth/realms/realm-qt", "issuerAssignedId" : "user.name@company.com" } ] }
核心注意事项
issuer字段值必须和B2C租户中配置的对应外部IDP的issuer完全一致,大小写、路径均不能有偏差,否则用户后续登录时无法匹配到预创建的账号issuerAssignedId字段值必须和外部IDP登录时返回的用户唯一标识(通常为sub声明)完全一致- 单个用户支持配置多个
federated类型的身份条目,可对应多个不同的外部身份提供商
内容的提问来源于stack exchange,提问作者Gabriele Muscas
相关产品推荐
相关产品推荐

