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

Asp.net mvc 将ASP.NET应用程序部署到Azure Web应用程序时出现HTTP 403错误,asp.net-mvc,azure,azure-active-directory,azure-web-app-service,azure-configuration,Asp.net Mvc,Azure,Azure Active Directory,Azure Web App Service,Azure Configuration,我正在尝试为ASP.NET MVC Web应用程序建立一个登台环境,但遇到了一个又一个问题,最后一个问题是: 目前我收到一个HTTP 403-禁止,“您没有查看此目录或页面的权限。”尝试访问该页面时出错 身份验证智能应用程序使用Azure Active Directory作为身份验证提供程序,在本地测试(使用测试AAD)和生产中运行良好。本地和生产应用程序未使用Azure Web应用程序。我在Azure应用程序服务页面上注意到,有可能在Azure中指定身份验证权限,但我真的不想/不需要使用该权限

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

目前我收到一个HTTP 403-禁止,“您没有查看此目录或页面的权限。”尝试访问该页面时出错

身份验证智能应用程序使用Azure Active Directory作为身份验证提供程序,在本地测试(使用测试AAD)和生产中运行良好。本地和生产应用程序未使用Azure Web应用程序。我在Azure应用程序服务页面上注意到,有可能在Azure中指定身份验证权限,但我真的不想/不需要使用该权限,因为所有内容都在App resp中指定。在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应用程序指定的名称:

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

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


更新


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

  • 基于角色的授权不起作用,因为我们忘记在应用程序注册的清单文件中指定应用程序角色,然后将安全组链接到应用程序角色。查看此处了解更多信息:
  • 我们有一个API,它只在我们公司的域中可见。当Azure Web应用程序在该域之外运行时,尝试访问该API会导致内部服务器错误。我们仍然需要找到解决办法
  • 我们遇到的情况是,授权后对回复URL的请求将从HTTPS重定向到HTTP。我们已经解决了这个问题,但由于有五个人在连续地尝试这些东西,我们目前不知道实际的修复方法是什么。我们可能会创建另一个Azure Web应用程序,然后它可能会显示解决方案的这一部分

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

您正在使用openid示例吗


另外,请确保您是使用在租户和应用程序本身下具有正确权限的用户登录的。我的同事和我制作了一个简短的视频,其中包括可能对本用例有用的正确配置

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

  • 基于角色的授权不起作用,因为我们忘记在应用程序注册的清单文件中指定应用程序角色,然后将安全组链接到应用程序角色。查看此处了解更多信息:
  • 我们有一个API,它只在我们公司的域中可见。当Azure Web应用程序在该域之外运行时,尝试访问该API会导致内部服务器错误。我们仍然需要找到解决办法
  • 我们遇到的情况是,授权后对回复URL的请求将从HTTPS重定向到HTTP。我们已经解决了这个问题,但由于有五个人在连续地尝试这些东西,我们目前不知道实际的修复方法是什么。我们可能会创建另一个Azure Web应用程序,然后它可能会显示解决方案的这一部分

感谢您的回复和教程!我将您的工作与我的工作进行了比较,并对您链接的模板进行了相同的比较,但没有使其正常工作。然而,最终取得了进展,但我无法确切指出是什么改变了这一点。应用程序运行的情况已经被证明是相当棘手的,因为它在公司域之外运行还存在额外的挑战,这可能就是它与生产版本行为不同的原因。此时,它正在运行,身份验证也可以正常工作,但我们仍在努力解决基于角色的授权问题。感谢您分享您的解决方案!