使用Azure AD B2C实现SPA案例管理系统登录后关联用户案件信息
Azure AD B2C 单页应用场景下身份关联与业务数据获取方案
核心实现逻辑
你没有遗漏关键配置,只需要将B2C返回的身份声明和你的业务数据做绑定即可,整体逻辑和传统开发模式差异很小:
- Azure AD B2C 登录成功后返回的*ID令牌(id_token)*中默认携带
sub声明,该值是B2C用户的全局唯一永久标识符,等价于传统方案中的用户ID,你可以将该值作为外键存入你的业务用户表,和用户对应的案件编号做关联绑定。 - 所有身份有效性校验由Azure AD B2C完成,你只需要验证
id_token的签名、颁发者、受众、有效期四个核心字段合法,即可信任令牌内包含的sub值是真实有效的。
完整落地流程
首次注册/登录环节
- 用户首次通过B2C完成注册或登录后,前端将拿到的
id_token放到请求头Authorization字段,格式为Bearer {你的id_token值},调用后端身份校验接口。 - 后端完成令牌有效性校验后提取
sub值,查询业务用户表:- 如果存在对应
sub的用户记录,直接返回关联的案件编号、案件详情等业务数据即可。 - 如果不存在对应记录,说明是首次登录的新用户,可以引导用户完成初始资料补全,将
sub值、用户基础信息、关联的案件编号一起写入业务用户表后再返回业务数据。
- 如果存在对应
后续登录环节
后续用户登录流程和传统方案完全一致:前端携带id_token请求后端接口,后端校验令牌有效后提取sub值,直接查询关联的案件数据返回即可。
可选简化配置
如果你的案件编号属于非敏感、不会变更的固定属性,可以通过以下方式简化流程:
- 在Azure AD B2C中新增自定义用户属性存储案件编号,提前将已有用户的案件编号导入到对应B2C用户的自定义属性中。
- 配置B2C用户流/自定义策略,在返回的
id_token中增加该自定义属性的声明,前端解析令牌即可直接拿到案件编号,无需额外调用后端接口查询。
注意:敏感业务数据不要存到令牌中,令牌可被前端直接解析,敏感数据必须通过后端接口加密返回。
注意事项
- 不要使用邮箱、手机号这类可修改的信息作为用户唯一标识,只有
sub是永久唯一的用户标识符。 - SPA场景下建议使用授权码流+PKCE模式获取令牌,不要使用已不推荐的隐式流,安全性更高。
- 后端校验令牌无需调用B2C远程接口,使用B2C公开的签名公钥本地校验即可,性能更高。
内容的提问来源于stack exchange,提问作者72GM
相关产品推荐
相关产品推荐

