You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C自定义策略下React应用会话管理方案咨询

Azure B2C自定义策略+React应用会话需求实现与方案验证

一、核心需求实现思路

1. 会话闲置30分钟后强制重新验证

需结合Azure B2C会话配置与React应用端token过期处理:

  • B2C侧配置滚动会话过期,触发闲置超时后的重新认证;
  • React端监听token的exp(过期时间)与iat(签发时间),同时在路由守卫中监控用户会话活跃度,若超过30分钟无操作,主动清理本地token并跳转至登录页。

2. 限制用户会话数量

Azure B2C原生不直接支持会话数量限制,需通过以下方式实现:

  • 利用B2C的自定义属性存储用户当前活跃会话的标识(如JWT的jti);
  • 用户登录时,将当前会话标识新增至自定义属性,同时通过B2C REST API调用清理超出数量限制的旧会话对应token;
  • token验证环节,检查当前会话标识是否在用户活跃会话列表中,不存在则拒绝认证。

3. 会话感知密码变更与超时

  • 密码变更感知:用户修改密码后,B2C会自动吊销所有旧会话的refresh token,React端调用refresh token获取新token时会收到错误,此时需清理本地存储并跳转登录;
  • 超时感知:监听B2C返回的token过期时间,结合应用端会话超时逻辑,在token即将过期或已过期时触发重新认证,同时处理B2C会话超时后的跳转逻辑。

二、两种会话生命周期方案验证

方案一:绝对会话过期

<UserJourneyBehaviors>
  <SingleSignOn Scope="Application" />
  <SessionExpiryType>Absolute</SessionExpiryType>
  <SessionExpiryInSeconds>86400</SessionExpiryInSeconds>
</UserJourneyBehaviors>
  • 特点:会话从登录时刻起固定24小时后过期,不受用户操作影响;
  • 适配性:不满足需求1的"闲置30分钟重新验证"要求,无法感知用户闲置状态,不符合核心需求。

方案二:滚动会话过期

<UserJourneyBehaviors>
  <SingleSignOn Scope="Application" />
  <SessionExpiryType>Rolling</SessionExpiryType>
  <SessionExpiryInSeconds>1800</SessionExpiryInSeconds>
</UserJourneyBehaviors>
  • 特点:会话闲置30分钟(1800秒)后过期,用户有操作则自动刷新会话有效期;
  • 适配性:完全匹配需求1的"闲置30分钟重新验证"要求,是满足第一个需求的正确配置。

三、需求2(会话数量限制)与需求3(会话感知)的补充建议

针对会话数量限制

  • 先在Azure门户创建B2C自定义用户属性(如activeSessions,类型为字符串集合),用于存储用户活跃会话标识;
  • 在登录流程的Orchestration Step中添加REST API调用,实现:
    1. 获取用户当前的activeSessions列表;
    2. 若列表长度达限制(如5个),移除最早的会话标识;
    3. 将当前会话的jti(JWT ID)添加至列表并更新用户属性;
  • 在token验证的技术配置文件中,添加检查逻辑:验证当前token的jti是否存在于用户的activeSessions列表中,不存在则拒绝认证。

针对会话感知密码变更与超时

  • 密码变更:在React应用中封装refresh token调用逻辑,收到invalid_grant错误(表示refresh token失效)时,立即清理本地token与会话信息,跳转至登录页;
  • 超时处理:React应用路由守卫中,除检查token过期时间外,结合全局状态存储的用户最后操作时间,若超过30分钟无操作,主动触发重新认证;
  • 需强制重新认证时,跳转至B2C登录页并携带prompt=login参数,确保用户必须重新输入凭证。

内容的提问来源于stack exchange,提问作者Shiva S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:15:21