2015-06-26 73 views
1

當通過Azure門戶在我的網站上激活「身份驗證/授權」時。Azures inbuild網站授權在返回我的網站後拋出權限錯誤

我沒有得到例外"You do not have permission to view this directory or page."我被重定向回我的網站後。

而且它重定向我回到我的網站上此網址格式:https://開頭{} somewebsitename .azurewebsites.net/{} ActiveDirectoryApplicationGuid /登錄

當我看的詳細記錄的錯誤,我可以看到這個錯誤:

<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>&nbsp;&nbsp;&nbsp;EasyAuthModule_32bit</td></tr> 
<tr><th>Notification</th><td>&nbsp;&nbsp;&nbsp;AuthenticateRequest</td></tr> 
<tr class="alt"><th>Handler</th><td>&nbsp;&nbsp;&nbsp;ExtensionlessUrlHandler-Integrated-4.0</td></tr> 
<tr><th>Error Code</th><td>&nbsp;&nbsp;&nbsp;0x80004005</td></tr> 
</table> 
</div> 

EasyAuthModule不是我們的代碼或任何引用我們的庫的一部分。

我該如何解決這個問題? 這個確切的設置用於正常工作,並剛剛停止工作。這增加了混亂。

回答

1

這是EasyAuthModule實際上是一個Microsoft庫。 Azure的支持告訴我,他們剛剛搬到了本地庫EasyAuthModule

雖然這似乎與Glimpse存在兼容性問題。

從我的web.config中刪除任何Glimpse引用後,它現在工作正常!

Azure支持人員告訴我他們正在努力解決這個問題,所以我們可以再次使用Glimpse。

+0

現在應該解決Glimpse兼容性問題。 –

1

As Sam7提到。 EasyAuthModule是一個HTTP模塊,作爲身份驗證/授權功能的一部分注入網站進程。最近對此模塊進行了更改,這可能會導致與在同一應用程序中運行的其他HTTP模塊發生衝突。 Glimpse就是一個這樣的HTTP模塊,它有一個默認配置,已知會導致與最新版本的EasyAuthModule產生衝突。

編輯:2015年9月30日 一個更新EasyAuthModule最近做出窺測現在應該正常工作。


警告,下面


問題超技術細節是HTTP模塊,如一瞥模塊中的每個HTTP請求的開始可以讀取HTTP請求實體主體。通常這很好,因爲ASP.NET託管模塊可以讀取ASP.NET請求的內容而不會產生任何副作用。但是,這可以防止任何非ASP.NET代碼讀取請求正文 - 在這種情況下,Glimpse會阻止EasyAuthModule的新版本(已從ASP.NET託管模塊轉換爲本機IIS模塊)讀取登錄令牌這是在用戶登錄時從Azure AD發送的。結果是HTTP 403.71響應。

要解決此問題,您可以禁用第三方模塊(例如,Glimpse),它正在讀取HTTP請求內容,或將其配置爲停止讀取登錄請求的請求內容(我相信Glimpse,例如有一種方法可以排除某些URL和/或只讀請求標頭 - 我將推遲到documentation爲了這)。這將允許EasyAuthModule讀取Azure AD登錄令牌併成功驗證HTTP請求。

長期來看,EasyAuthModule將被重構,以確保它可以攔截HTTP請求之前第三方模塊可以讀取它們以避免此類兼容性問題。不幸的是,現在你需要修改你的配置來解決這個問題,直到永久修復。