AAD身份认证回复URL不匹配及异常回调路径问题求助
解决Azure App Service部署后AAD认证回调URL不匹配及权限问题
看起来你遇到的核心问题是代码中自定义的AAD OIDC认证和**Azure App Service自带的Easy Auth(应用服务认证/授权功能)**发生了冲突,导致回调URL不符合预期,后续还触发了权限报错。下面分步骤帮你解决:
第一步:确认是否启用了App Service Easy Auth
登录Azure门户,找到你的App Service实例,进入「认证」选项卡:
- 如果状态显示为「启用」,那就是它接管了你的认证流程——Easy Auth会自动拦截请求并使用自己的回调路径(也就是你看到的
https://xxx.azurewebsites.net/.auth/login/aad/callback),完全绕过了你代码里配置的OIDC逻辑。
第二步:二选一解决冲突
你需要选择以下两种方案中的一种,不能同时使用:
方案一:关闭Easy Auth,完全使用代码内的AAD认证
- 在App Service的「认证」选项卡,将状态切换为「禁用」,点击保存。
- 回到应用注册页面,确保添加了所有生产环境的回调URL:
- 你的自定义域名回调:
https://xxxxx.me/yyyyyBackend/signin-oidc - App Service默认域名回调:
https://xxx.azurewebsites.net/signin-oidc
- 你的自定义域名回调:
- 重新部署你的应用,测试登录流程——此时应该会使用你代码里配置的OIDC逻辑,回调URL匹配后就能正常登录了。
方案二:保留Easy Auth,移除代码内的认证配置
如果你想使用App Service提供的托管认证(无需自己维护OIDC代码),可以这么做:
- 在你的项目中移除所有AAD认证相关的代码和配置:
- 删除
appsettings.json里的AzureAd节点 - 移除Program.cs/Startup.cs中
AddAzureAD、AddOpenIdConnect这类认证中间件的配置代码
- 删除
- 回到App Service的「认证」选项卡,配置AAD身份提供者:
- 选择「Microsoft」作为身份提供者
- 填入你的应用注册的
ClientId、ClientSecret、TenantId - 确认系统自动添加的回调URL
https://xxx.azurewebsites.net/.auth/login/aad/callback已存在(如果没有手动添加) - 设置「未认证时的操作」为「登录」,保存配置
- 重新部署应用,此时App Service会自动处理认证流程,你的应用可以通过
HttpContext.User直接获取用户身份信息。
解决「You do not have permission to view this directory or page.」报错
这个错误大概率是因为你同时启用了Easy Auth和代码内的认证,导致双重拦截;或者是应用路由配置有问题:
- 如果用方案一关闭Easy Auth后仍报错,检查:
- 应用的默认路由是否配置正确(比如有没有设置默认的控制器和动作)
- 查看App Service的「日志」选项卡,获取更详细的错误堆栈信息,定位具体问题
- 如果用方案二,确保已经完全移除了代码内的认证中间件,避免和Easy Auth冲突
内容的提问来源于stack exchange,提问作者Matt Douhan
相关产品推荐
相关产品推荐

