Azure AD B2C登录后获取用户Company值的最优方案咨询
Azure AD B2C登录后获取用户Company值的最优方案
结论:优先选择方案B
Azure AD B2C的用户档案中自带Company字段,无需额外创建自定义属性,直接配置让该字段出现在token中,或者通过Microsoft Graph API查询,是更优的方式。
如何实现方案B
方式1:配置User Flow让Company出现在id_token/access_token中
虽然默认返回的token不包含Company字段,但可以通过修改User Flow的应用声明配置,让Azure AD B2C在登录时将该字段返回:
- 进入Azure AD B2C控制台,找到对应的User Flow(例如
B2C_signin_1) - 选择Application Claims选项
- 在可选声明列表中找到
Company(内置属性的Company通常在基础用户信息分类下,仔细查找即可) - 勾选该声明并保存User Flow
- 重新发起登录流程,此时
id_token或access_token中就会包含company字段
方式2:通过Microsoft Graph API查询用户详情
如果不想修改User Flow,也可以在用户登录后,使用有效的access_token调用Microsoft Graph API获取Company值:
- 确保你的Azure AD B2C应用已被授予
User.Read或User.ReadBasic.All权限(在Azure AD B2C的应用注册页面配置API权限) - 用户登录成功后,获取针对Microsoft Graph的
access_token(获取时需指定resource为https://graph.microsoft.com) - 调用接口:
GET https://graph.microsoft.com/v1.0/me - 响应结果中的
companyName字段,对应用户档案里的Company值
为什么不选方案A
方案A需要创建自定义Company属性,会造成数据冗余(用户档案中已有同名字段),后续还需维护两个字段的数据同步,增加不必要的复杂度,因此不是最优选择。
内容的提问来源于stack exchange,提问作者user1063287
相关产品推荐
相关产品推荐

