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

使用Azure AD JWT访问自定义API服务器的方案是否安全?

方案安全性分析:Azure Entra ID + React + 无过期校验的自定义API

你的方案存在两处关键安全风险,整体安全性不足,具体分析如下:

1. localStorage存储JWT的风险

  • localStorage以明文形式存储数据,且前端JavaScript可直接访问。如果你的React应用存在XSS漏洞,攻击者注入恶意脚本后,能轻易窃取localStorage中的JWT,进而冒充合法用户调用你的自定义API,直到令牌自然过期(75分钟)。
  • 相比之下,带有HttpOnly、Secure属性的Cookie不会被前端JS读取,能有效规避XSS攻击导致的令牌窃取风险。

2. 自定义API不校验JWT过期的风险

  • 即使JWT已经过期,只要攻击者获取到这个过期令牌,依然可以通过你的API获取用户邮箱信息或执行其他操作,相当于把令牌的有效期无限延长,大幅提升了令牌被盗用后的危害时长。
  • Azure AD签发的JWT本身包含exp(过期时间)声明,API完全可以利用这个字段快速校验令牌有效性,不做校验属于明显的安全疏漏。

优化建议

  • 替换存储方式:优先使用带HttpOnly、Secure属性的Cookie存储JWT;若必须前端存储,改用sessionStorage(页面关闭后自动清除,风险低于localStorage)。
  • 强制API校验逻辑:在自定义API中必须完成两项校验:一是验证JWT的签名(确保令牌由Azure Entra ID签发且未被篡改),二是校验exp字段判断令牌是否过期。
  • 可选:实现令牌刷新:引入refresh_token机制,在access_token过期前自动获取新令牌,既提升用户体验,也可进一步缩短access_token有效期,降低被盗用风险。

内容的提问来源于stack exchange,提问作者Lakshay Dulani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:24:59