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

Azure静态Web应用身份验证:令牌缺失与多租户登录故障

Azure Static Web App 身份验证问题解决方案

背景

我们运行着一个Azure Static Web App,已配置为所有路由受限,并按照文档设置自定义身份验证。关联的应用注册配置如下:

  • 平台:Web
  • 流程:ID令牌(隐式和混合)
  • 支持的账户类型:多租户

登录功能正常,但存在两个问题:


问题1:/.auth/me端点无JWT,如何向内部API传递身份验证?

/.auth/me端点仅返回clientPrincipal JSON对象,不像App Service的同端点包含access_token字段。推荐方案如下:

  1. 使用SWA内置API集成(Azure Functions)
    如果你的API是SWA托管的Azure Functions,SWA会自动将clientPrincipal以Base64编码形式注入到请求的x-ms-client-principal头中。API端只需解码该头,就能获取用户身份信息(如用户ID、角色、租户ID等),无需手动处理JWT,这是SWA原生支持的最佳实践。
  2. 调用外部API时的身份传递
    • 可通过托管标识让SWA获得调用外部API的权限,同时在请求中添加自定义头,将clientPrincipal中的关键用户信息(如用户ID、租户ID)传递给外部API。
    • 禁止从authSession Cookie中提取JWT,该Cookie是SWA内部会话管理的私有机制,格式未公开,依赖它会导致兼容性问题。

问题2:外部AD用户登录报错AADSTS90072

报错提示“账户需先添加为租户外部用户”,尽管应用注册设置为多租户,原因及解决方法:

  • 原因:你的Azure AD租户外部协作设置可能限制了外部用户访问。多租户应用本身允许任何Azure AD用户登录,但租户级别的外部标识策略可能覆盖该设置,比如要求外部用户必须先被邀请,或仅允许特定租户的用户访问。
  • 解决方案:
    1. 登录Azure门户,进入Azure AD -> 外部标识 -> 外部协作设置。
    2. 将“来宾用户访问限制”调整为“允许来宾用户访问应用和门户”,同时确保“谁可以邀请来宾用户”的设置符合需求(如允许所有用户邀请,或仅管理员)。
    3. 检查应用注册的“授权”设置,确认未添加特定租户的访问限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:23:11