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

如何验证React SPA中msal-react获取的id_token在.NET API中的有效性

验证Microsoft ID Token有效性的方案

你不用特意调用Microsoft API来验证id_token的有效性,后端直接做本地验证是更高效、更合规的做法。如果一定要通过API验证,官方也有支持的方式,但优先选本地验证。

本地验证(推荐)

id_token是JWT格式,后端按以下步骤验证即可:

  • 验证签名:从Microsoft的OpenID配置端点(比如https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration)获取公钥,用它验证token的签名是否合法,确保token没被篡改。
  • 校验核心声明:
    • aud(受众)必须和你的client_id完全一致
    • iss(发行者)要符合Microsoft的格式(比如https://login.microsoftonline.com/{tenantId}/v2.0)
    • exp(过期时间)必须晚于当前时间
    • nbf(生效时间)必须早于当前时间
    • 如果前端生成了nonce,还要验证这个值是否匹配

通过API验证(可选)

如果确实需要用API验证,可使用Microsoft的令牌 introspect 端点:

  • 不需要传client_secret(SPA属于公共客户端,本身不应该持有client_secret,而且该验证端点也不需要这个参数)
  • 调用https://login.microsoftonline.com/{tenantId}/v2.0/oauth2/v2.0/introspect,传入参数:token(你的id_token)、client_id、token_type_hint=id_token
  • 注意:这个端点需要后端具备相应权限,而且相比本地验证,会增加网络请求开销,所以非必要不推荐

另外,如果你想获取用户信息,用access_token调用Microsoft Graph的/me端点就行,但这不能替代id_token的有效性验证——access_token有效不代表id_token没被篡改,所以验证id_token还是得走上面的步骤。


内容的提问来源于stack exchange,提问作者Narges Moemenyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:17:05