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

Azure Function对接Google身份验证遇401未授权问题排查求助

问题排查与解决方案

一、GCP OAuth重定向URI正确格式确认

  • 授权JavaScript源:必须是Azure Static Web App(SWA)的完整域名,格式为 https://<你的SWA名称>.azurestaticapps.net,有自定义域名的话需一并添加
  • 重定向URI:仅需添加SWA的身份验证回调地址,格式为 https://<你的SWA名称>.azurestaticapps.net/.auth/login/google/callback
  • 注意:独立Azure Function的域名无需加入GCP重定向URI,因为重定向流程仅针对SWA的登录环节

二、Azure Function身份验证配置修正

1. 解决“不可信域名”错误

该错误源于SWA的安全限制:默认仅允许向SWA集成的API(部署在SWA api目录下的函数)发送身份令牌。若你的Function是独立的Function App,需做以下配置:

  • 在SWA的配置页添加ALLOWED_ORIGINS设置,值为你的Function域名(https://<你的Function名称>.azurewebsites.net)
  • 在SWA的staticwebapp.config.json中配置路由规则,允许向Function域名转发令牌:
{
  "routes": [
    {
      "route": "https://<你的Function名称>.azurewebsites.net/*",
      "allowedRoles": ["authenticated"],
      "headers": {
        "Authorization": "Bearer {token}"
      }
    }
  ]
}

2. Function身份验证提供者配置

确保Function的Easy Auth中Google提供者配置无误:

  • 客户端ID/客户端密钥:与GCP OAuth应用的对应值完全一致
  • 允许的令牌受众:设置为你的GCP客户端ID(若令牌aud声明为该ID),或留空让系统自动验证
  • 访问控制:将“允许匿名请求”设为No,强制仅已验证用户可访问

三、调试追踪方法

1. 令牌有效性校验

用JWT解码工具(如本地离线的jwt.io)解析SWA获取的Bearer Token,重点检查:

  • aud:是否匹配GCP客户端ID或Function预期的受众
  • iss:必须为https://accounts.google.com
  • exp:确认令牌未过期
  • azp:应为SWA的GCP客户端ID

2. Function日志排查

  • 进入Azure Portal的Function App,打开「监测」→「日志」,查看401错误的详细日志,其中会包含令牌验证失败的具体原因(如受众不匹配、签名无效等)
  • 开启身份验证详细日志:在Function的「身份验证」设置中开启日志记录,级别设为「详细」,之后可在Log Analytics中查询AppServiceAuthLogs表获取完整验证流程信息

3. Postman请求调试

  • 确保Authorization头格式正确:Bearer <你的令牌内容>
  • 添加Origin头为你的SWA域名,模拟前端跨域请求场景,避免Function的CORS或身份验证拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:00:55