Asp.net Azures inbuild网站授权在返回到我的网站后引发权限错误
通过Azure门户在我的网站上激活“身份验证/授权”时 在我被重定向回我的站点后,“您没有查看此目录或页面的权限。”不会出现异常 此外,它还会将我重定向回url模式下的站点:https://{somewebsitename}.azurewebsites.net/{activedirectoryapplicationuid}/login 当我查看详细记录的错误时,我可以看到以下错误:Asp.net Azures inbuild网站授权在返回到我的网站后引发权限错误,asp.net,asp.net-mvc,azure,azure-web-app-service,glimpse,Asp.net,Asp.net Mvc,Azure,Azure Web App Service,Glimpse,通过Azure门户在我的网站上激活“身份验证/授权”时 在我被重定向回我的站点后,“您没有查看此目录或页面的权限。”不会出现异常 此外,它还会将我重定向回url模式下的站点:https://{somewebsitename}.azurewebsites.net/{activedirectoryapplicationuid}/login 当我查看详细记录的错误时,我可以看到以下错误: <h3>HTTP Error 403.71 - Forbidden</h3> <h
<h3>HTTP Error 403.71 - Forbidden</h3>
<h4>You do not have permission to view this directory or page.</h4>
</div>
<div class="content-container">
<fieldset><h4>Most likely causes:</h4>
<ul> <li>This is a generic 403 error and means the authenticated user is not authorized to view the page.</li> </ul>
</fieldset>
</div>
<div class="content-container">
<fieldset><h4>Things you can try:</h4>
<ul> <li>Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul>
</fieldset>
</div>
<div class="content-container">
<fieldset><h4>Detailed Error Information:</h4>
<div id="details-left">
<table border="0" cellpadding="0" cellspacing="0">
<tr class="alt"><th>Module</th><td> EasyAuthModule_32bit</td></tr>
<tr><th>Notification</th><td> AuthenticateRequest</td></tr>
<tr class="alt"><th>Handler</th><td> ExtensionlessUrlHandler-Integrated-4.0</td></tr>
<tr><th>Error Code</th><td> 0x80004005</td></tr>
</table>
</div>
HTTP错误403.71-禁止
您没有查看此目录或页面的权限。
最可能的原因:
- 这是一个常见的403错误,意味着经过身份验证的用户无权查看页面。
- 创建跟踪规则以跟踪此HTTP状态代码的失败请求。有关为失败请求创建跟踪规则的详细信息,请单击
-
您可以尝试的事情:
EasyAuthModule
不是我们的代码或任何参考库的一部分
我如何解决这个问题?
这个精确的设置过去工作得很好,现在已经停止工作了。这增加了混淆。这是
EasyAuthModule
实际上是一个Microsoft库。
Azure支持人员通知我,他们刚刚移动到本机库EasyAuthModule
不过,一瞥似乎存在兼容性问题
从我的web.config中删除任何浏览参考后,它现在工作正常强>
Azure支持人员告诉我,他们正在努力解决这个问题,因此我们可以再次使用Gliesh。如Sam7所述EasyAuthModule是一个HTTP模块,作为身份验证/授权功能的一部分注入网站进程。最近对此模块进行了更改,这可能会导致与同一应用程序中运行的其他HTTP模块发生冲突。是一个具有默认配置的HTTP模块,已知该配置会导致与最新版本的EasyAuthModule冲突 编辑日期:2015年9月30日 最近对EasyAuthModule进行了更新,现在应该可以正常工作了
警告,超技术细节如下
问题在于,HTTP模块(如Spile模块)可能会在每个HTTP请求的开头读取HTTP请求实体体。通常情况下,这很好,因为ASP.NET托管模块可以读取ASP.NET请求的内容,而不会产生任何副作用。但是,这会阻止任何非ASP.NET代码读取请求正文-在本例中,Spile会阻止新版本的EasyAuthModule(已从ASP.NET托管模块转换为本机IIS模块)读取用户登录时从Azure AD发送的登录令牌。结果是HTTP 403.71响应 要解决此问题,您可以禁用正在读取HTTP请求内容的第三方模块(例如,Spile),或将其配置为停止读取登录请求的请求内容(例如,我相信Spile有一种排除某些URL和/或仅读取请求头的方法-我将按照说明进行此操作)。这将允许EasyAuthModule读取Azure AD登录令牌并成功验证HTTP请求
从长远来看,EasyAuthModule将进行重构,以确保它在第三方模块读取HTTP请求之前拦截这些请求,从而避免此类兼容性问题。不幸的是,目前您需要修改配置以解决此问题,直到永久修复。现在应该解决与Spiew兼容性有关的问题。