You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure App Service发布后Azure AD认证无法获取用户身份的问题

解决Azure App Service部署后Azure AD认证失效的问题

这种本地正常、部署到云端就掉链子的情况我太熟悉了!大概率是几个容易忽略的配置细节没跟上,咱们一步步来排查解决:

1. 把Azure AD应用注册的重定向URI配置做全

别只改一处!Azure AD应用注册里有两个地方要更新重定向URI:

  • 先去「概述」页面的「重定向URI」模块,把生产环境的https://<你的App Service域名>/sign-oidc加进去
  • 再切到「身份验证」页面,找到「Web」平台下的重定向列表,替换成生产地址,同时确认「ID令牌」(OpenID Connect必需)是勾选状态
  • 划重点:如果用了自定义域名,一定要填自定义域名的地址,别用默认的.azurewebsites.net域名(除非你就用这个访问)

2. 把Azure AD配置移到App Service的应用设置里

本地的appsettings.json配置部署后可能出问题,比如缓存或者没覆盖。建议直接在App Service的「配置」→「应用程序设置」里手动加这些键值对:

  • AzureAd:ClientId:填你的应用注册客户端ID
  • AzureAd:TenantId:填租户ID
  • AzureAd:Domain:填你的租户域名
  • AzureAd:CallbackPath:填/sign-oidc
    App Service的应用设置优先级比本地配置文件高,还能避免部署时的配置丢失问题。

3. 强制开启App Service的HTTPS

Azure AD的OpenID Connect认证要求回调地址必须是HTTPS,所以一定要开「HTTPS强制」:

  1. 进App Service的「TLS/SSL设置」
  2. 找到「HTTPS强制」选项,设为「开启」
    没开的话,Azure AD直接拒绝回调请求,认证肯定失败。

4. 检查Startup类的认证配置顺序和内容

确认你的ConfigureServices里的认证配置是读配置文件的,没有硬编码本地地址:

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));

还有Configure方法里的中间件顺序绝对不能错:

app.UseAuthentication(); // 先认证
app.UseAuthorization(); // 再授权
// 其他中间件比如UseEndpoints要放在这俩后面

5. 开日志抓具体错误

要是前面都没问题还是不行,就开App Service的日志看细节:

  1. 进「日志」→「应用程序日志记录」,选「文件系统」并开启
  2. 切到「日志流」,实时看运行时的错误信息
    常见的坑比如回调地址不匹配、客户端ID输错、权限不够,日志里都会明明白白告诉你。

6. 别让App Service内置认证和代码里的认证冲突

如果你是自己在代码里写的AddAzureAD配置,那App Service的「身份验证」页面一定要设为「关闭」——内置认证和自定义认证同时开的话,肯定会打架,导致认证流程混乱。


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

火山引擎 最新活动