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

Vue.js SPA调用Azure Functions时Azure B2C认证遇403错误求助

问题场景

我有一个基于Vue.js开发的单页应用(SPA),部署在Azure App Services上,使用Azure B2C和MSAL 2.8.0实现身份验证。SPA调用的Web API基于.NET 8.0开发,以Azure Functions(Function Apps)形式部署。希望用户登录SPA后,通过同一B2C租户使用Easy Authentication对Azure Functions进行身份验证,但在传递正确的Bearer令牌后,持续收到403错误代码。已遵循微软官方文档指导配置但未解决问题,Function App身份验证配置截图如下:
Azure Function App Authentication

排查与解决建议
  • 验证令牌受众(Audience)匹配性
    用jwt.ms解析SPA获取的Bearer令牌,检查aud声明是否与Azure Functions对应的B2C应用程序客户端ID完全一致。如果令牌受众是B2C租户定义的API范围(如https://{tenant}.onmicrosoft.com/api),需在Function App的身份验证配置中,将“允许的令牌受众”设置为该范围值,而非客户端ID。
  • 核对Function App身份验证核心配置
    结合截图确认以下配置:
    • 登录提供程序是否选择了正确的B2C租户及对应的用户流/自定义策略
    • “操作”设置必须选择允许匿名请求(无操作)——因为SPA主动传递令牌,不需要Function App自动跳转登录,若设置为其他选项会触发自动重定向逻辑,导致令牌验证失败
    • 确认无额外的令牌过滤规则干扰验证
  • 检查令牌签名算法与颁发者
    确认令牌的iss声明为正确的B2C租户颁发者URL(格式:https://{tenant}.b2clogin.com/{tenant-id}/{policy-name}/v2.0/),且签名算法为RS256(B2C默认算法)。Easy Auth默认仅验证RS256签名的令牌,若使用HS256会直接拒绝请求。
  • 排查Azure Functions代码层面的授权逻辑
    检查Function代码中是否添加了正确的[Authorize]属性,是否指定了匹配的授权策略;同时确认host.json中没有禁用身份验证相关配置,也不存在自定义权限验证逻辑拦截请求。
  • 验证请求头格式正确性
    确认SPA调用Function时,Authorization请求头格式严格为Bearer {token},无多余空格或拼写错误。可直接用Postman携带令牌调用Function测试,排除SPA端请求构造问题。
  • 检查B2C应用权限配置
    在B2C租户中,确认SPA应用已被授予访问Function App对应API应用的委派权限,且已完成管理员同意(若需);同时确保API应用的“公开API”设置中定义了正确的范围,且SPA请求令牌时已指定该范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:30:08