ASP NET MVC - 403 禁止访问被拒绝
ASP NET MVC - 403 Forbidden Access is Denied
在团队项目中,ASP.NET Web API MVC 仅因为 WsFederation 协议而被使用,并且它承载了一个 Angular 构建。
该项目有一个自定义 DelegatingHandler,它用于调用我们的后端(Angular web 不直接调用 API URL,它调用 "itself" 因此 DelegatingHandler 可以调用我们的后端)
整个构建部署在 Azure AppService 中并且运行良好:)(显示 WsFed 提供程序界面,在身份验证后,Angular webapp 也会显示)。
但有时我会遇到 "beautiful"“403 - 禁止访问被拒绝”,这似乎与后端无关(Application Insights 中没有日志)。似乎如果我清理缓存 and/or cookie,它又可以工作了......但是在 PROD 环境中他们有时会遇到这个问题,这有点尴尬:S
任何想法会是什么问题?以及在 web.config 中添加什么让它说话更多 :p ?
这是我的 web.config 示例(我省略了一些与 Angular 路由或应用程序设置相关的代码):
Web.config:
<system.web>
<compilation debug="true" targetFramework="4.6.2" />
<httpRuntime targetFramework="4.6.2" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-XSS-Protection" value="1; mode=block" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
<remove fileExtension=".woff" />
<mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
Views文件夹里也有一个web.config但是我没碰它(默认生成的那个)
我终于找到自己为什么会遇到这个问题
=> 对于那些可能处于相同情况的人,是 Azure 中定义的 WAF 规则(World Application Firewall)导致了 403 Forbidden
在团队项目中,ASP.NET Web API MVC 仅因为 WsFederation 协议而被使用,并且它承载了一个 Angular 构建。 该项目有一个自定义 DelegatingHandler,它用于调用我们的后端(Angular web 不直接调用 API URL,它调用 "itself" 因此 DelegatingHandler 可以调用我们的后端)
整个构建部署在 Azure AppService 中并且运行良好:)(显示 WsFed 提供程序界面,在身份验证后,Angular webapp 也会显示)。
但有时我会遇到 "beautiful"“403 - 禁止访问被拒绝”,这似乎与后端无关(Application Insights 中没有日志)。似乎如果我清理缓存 and/or cookie,它又可以工作了......但是在 PROD 环境中他们有时会遇到这个问题,这有点尴尬:S
任何想法会是什么问题?以及在 web.config 中添加什么让它说话更多 :p ?
这是我的 web.config 示例(我省略了一些与 Angular 路由或应用程序设置相关的代码):
Web.config:
<system.web>
<compilation debug="true" targetFramework="4.6.2" />
<httpRuntime targetFramework="4.6.2" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-XSS-Protection" value="1; mode=block" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
<remove fileExtension=".woff" />
<mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
Views文件夹里也有一个web.config但是我没碰它(默认生成的那个)
我终于找到自己为什么会遇到这个问题 => 对于那些可能处于相同情况的人,是 Azure 中定义的 WAF 规则(World Application Firewall)导致了 403 Forbidden