将 ASP.NET 应用程序部署到 Azure Web 应用程序时出现 HTTP 403 错误

HTTP 403 Error when deploying ASP.NET App to Azure Web App

我正在尝试为 ASP.NET MVC Web 应用程序构建一个暂存环境,但我遇到了一个又一个问题,最后一个是这个:

目前我在尝试访问该页面时收到 HTTP 403 - 禁止访问,"You do not have permission to view this directory or page." 错误。

在身份验证方面,应用程序使用 Azure Active Directory 作为身份验证提供程序,这在本地测试(使用 Test-AAD)和生产中运行良好。本地和生产应用程序未使用 Azure Web 应用程序。我在 Azure 应用服务页面上注意到可以在 Azure 中指定身份验证,但我真的不想/不需要使用它,因为一切都在应用程序中指定。在 web.config 中配置(ClientID、ClientSecret 和 Tenant)。反正我直接在Azure上填Authentication也不行,所以又去掉了。

现在发生的事情是重定向到 login.microsoftonline.com 上的登录页面,并且根据 AAD 管理员的说法,登录尝试是成功的,或者至少没有显示任何特殊情况。然而,当被重定向回我的页面时,我得到了一个通用的 403,没有任何可以帮助确定问题的附加信息。

我确实检查了各种日志以获取更多详细信息,我发现的唯一特点是出于一些非常奇怪的原因,所有请求都是完全乱码 URL:

请求URL/指定回复URL:https:\skillmanagementtest.azurewebsites.net

根据日志实际请求 URL:https:\Skillmanagementtest:80

我完全不知道这个 URL 的来源,但是,大写的 "Skillmanagementtest" 似乎是我为 Azure Web App 指定的名称: Screenshot resource group items

web.config 在 CI/CD 管道期间被正确转换,我仔细检查了那里的身份验证设置(租户、clientID、clientSecret),我真的不知道可能是什么导致这个问题。

我在其他问题上发现的一个提示是检查 IIS 日志,但是当我尝试访问目录时,据说这些日志放在我被拒绝访问,即使我对应用程序服务具有所有者权限。 ..


更新

经过漫长而疲惫的尝试和讨论过程,我们终于启动了应用程序并 运行。我们所做的一些观察可能对其他有此问题或类似问题的人感兴趣:

检查以确保您在 web.config 和应用程序设置中的内容与您在回复 URL 中对门户中的应用程序注册的内容相匹配。回复 URL 不匹配的地方可能有一些参考。

您使用的是 openid 示例吗? https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect

还要确保您登录时使用的用户在租户和应用程序本身下具有正确的权限。我和我的同事制作了一个简短的视频,其中包含可能有助于此用例的正确配置。 https://www.youtube.com/watch?v=MohaxN6fsDs

经过漫长而疲惫的尝试和讨论过程,我们终于启动了应用程序并 运行。我们所做的一些观察可能对其他有此问题或类似问题的人感兴趣:

  • 基于角色的授权不起作用,因为我们忘记在应用程序注册的清单文件中指定应用程序角色,然后link 安全组到应用程序角色。在这里查看更多信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps
  • 我们有一个 API,它只在我们公司的域内可见。由于 Azure Web 应用程序在该域外运行,因此尝试访问 API 会导致内部服务器错误。我们仍然需要为此找到解决方案。
  • 我们遇到过这样一种情况,授权后对回复 URL 的请求将从 HTTPS 重定向到 HTTP。我们已经解决了这个问题,但是由于有五个人连续尝试了一些东西,我们目前不知道真正的修复方法是什么。我们可能会创建另一个 Azure Web 应用程序,然后可能会揭示这部分解决方案。