如何使用单个Azure AD应用注册保护SPA和Azure Function安全
解答
首先明确结论:该场景支持直接使用SPA传来的Bearer令牌进行鉴权,无需兑换为会话令牌,你遇到的无法识别令牌的问题一般是配置偏差导致的,可按以下顺序排查:
- 确认令牌类型正确:你当前仅启用了id token流,但id token仅用于SPA端校验用户身份,不能作为访问后端API的鉴权凭证,你需要额外为SPA配置Azure AD的API权限,申请访问Function App对应的资源scope,调用MSAL获取access token用于接口请求。
- 确认Function App身份验证配置正确:进入Function App的身份验证设置页,确认未认证请求的处理逻辑为允许Bearer令牌鉴权,不需要开启令牌存储功能,内置的鉴权模块会自动解析请求头中的
Authorization字段,不依赖会话cookie。 - 确认请求头格式正确:SPA发起请求时,必须在头中携带
Authorization: Bearer <access_token>,注意不要遗漏Bearer前缀和后续空格。 - 确认令牌受众匹配:将拿到的access token复制到JWT解析工具中查看
aud声明,取值必须和Function App对应的AD应用客户端ID一致,否则鉴权模块会直接忽略该令牌。
内容的提问来源于stack exchange,提问作者stevenrcfox
相关产品推荐
相关产品推荐

