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

时间:2019-01-15 11:20:16

标签: asp.net-mvc azure azure-active-directory azure-web-sites azure-configuration

我正在尝试为ASP.NET MVC Web App构建过渡环境,但是却因问题而绊脚石,最后一个就是这样的:HTTP 500.79 Error / System.UriFormatException when deploying ASP.NET App to Azure Web App

当前,我收到HTTP 403-禁止,“您无权查看此目录或页面。”尝试访问页面时出错。

在身份验证方面,该应用程序使用Azure Active Directory作为身份验证提供程序,它在本地测试(使用Test-AAD)和生产环境中运行良好。本地和生产性应用程序未使用Azure Web Apps。我在“ Azure应用程序服务”页面上注意到,可以在Azure中直接指定身份验证,但是我真的不希望/不需要使用身份验证,因为所有内容都在应用程序响应中指定。在web.config中配置(ClientID,ClientSecret和Tenant)。无论如何,当我尝试直接在Azure上填写身份验证时,它也不起作用,因此我再次将其删除。

现在发生的情况是,重定向到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日志,但是当我尝试访问目录时,即使我对App Service拥有所有者权限,据说这些日志也被放置在拒绝访问中...


更新

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

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

2 个答案:

答案 0 :(得分:1)

检查并确保web.config和应用程序设置中的内容与门户中应用程序注册的回复URL中的内容匹配。某些地方可能有一些参考,其中答复URL不匹配。

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

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

答案 1 :(得分:1)

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

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