3

我們開發了一個具有Azure Active Directory身份驗證的MVC5應用程序。當作爲Web應用程序部署到Azure時,一切正常。不過,我們已被要求部署爲雲服務。MVC5已發佈到Azure,因爲雲服務重定向到本地主機:登錄AD後有44300

創建一個新的雲服務項目,將MVC項目添加爲角色,將2個端點HTTP/HTTPS添加到雲服務。創建一個自簽名證書並應用於HTTPS端點。

本地調試

一切都運行在本地調試IIS Express和Azure計算模擬器的罰款。 初始請求指向http://localhost:7390(IISe http端口)。
重定向到Microsoft AD登錄然後重定向到https://localhost:4430(IISe https端口),並且在自簽名證書的預期證書警告之後主頁已正確顯示。

Azure的雲服務

應用爲被推到Azure中作爲雲服務的部署。
自簽名證書已上傳到Azure。

Azure的Active Directory中已經有一個條目添加的應用程序(使用雲服務發佈URL,如下圖所示),在URL

登錄:http://xxxxxxxxtest.cloudapp.net/

APP ID URI:http://xxxxxxxxtest.cloudapp.net/

回覆ULR :http://xxxxxxxxtest.cloudapp.net/

當按下網站http://xxxxxxxxtest.cloudapp.net/時,按預期重定向到Microsoft AD登錄,但在登錄成功後,我們被重定向到https://localhost:4430就好像它在本地測試環境中運行一樣。

完全卡在這一個!

TIA Martin。

+0

請檢查重定向URL(https:// localhost:4430)是否已硬編碼您正在創建用於重定向到Azure AD以進行身份​​驗證的URL的應用程序。 –

+0

在我們的主應用程序出現此問題後,我從頭創建了一個新的測試應用程序(具有單個Web角色MVC的雲服務 - 只是基本的默認索引頁面應用程序)。測試應用程序展示完全相同的問題。該測試應用程序使用我自己的MSDN Azure帳戶 - 在發佈雲服務之前,該帳戶完全乾淨。有沒有硬編碼的重定向,我可以在主要或測試應用程序的web.config中找到..這真的讓我感到困惑!僅發生4430位置是開發服務器的MVC項目的F4屬性SSL URL? – MartinS

+0

嘗試在您的應用程序旁邊運行提琴手,以便驗證重定向來自何處。 我的第一個猜測也是Azure AD中的重定向URL。在身份驗證發生後,使用Azure AD重定向的提琴手進行檢查。這樣,如果它是Azure AD中的配置問題或MVC應用程序中存在問題,您可以指出這一點。 – kim

回答

4

我修復了這個問題。

應用ID URI在天青活動目錄/應用程序沒有匹配在下列鍵

  • IDA在web.config定義的值:
  • IDA領域:AudienceUri

在Azure中導航到Active Directory/Applications。
選擇應用程序並導航到配置 獲取APP ID URI值。對於我的測試程序我設置爲

http://xxxxxxxxtest.cloudapp.net/WebRole

編輯網頁。配置

的IDA:境界及IDA:AudienceUri值必須的APP ID URI

匹配境界值必須matche的APP ID URI

<appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    <add key="ida:FederationMetadataLocation" value="https://login.windows.net/yyyyyyyy.onmicrosoft.com/FederationMetadata/2007-06/FederationMetadata.xml" /> 
    **<add key="ida:Realm" value="http://xxxxxxxxtest.cloudapp.net/WebRole" />** 
    **<add key="ida:AudienceUri" value="http://xxxxxxxxtest.cloudapp.net/WebRole"/>** 
</appSettings> 

<system.identityModel.services> 
    <federationConfiguration> 
     <cookieHandler requireSsl="false" /> 
     <wsFederation passiveRedirectEnabled="true" issuer="https://login.windows.net/yyyyyyyy.onmicrosoft.com/wsfed" 
        **realm="http://xxxxxxxxtest.cloudapp.net/WebRole"** requireHttps="true" /> 
    </federationConfiguration> 
</system.identityModel.services> 

確保這些相匹配之後,web應用程序正常運行通過Microsoft Active Directory登錄後。

如果URI不匹配,似乎重定向到https://localhost:44300是回退。

在「開發服務器」SSL URL的MVC屬性中定義的本地開發值(可以通過突出顯示解決方案中的MVC項目並按F4進行訪問)與應用程序一起發佈到雲服務,並用於if AD認證之後都不好。我通過將SSL URL更改爲localhost:44313來證實這一點,破壞了配置,並確實嘗試重定向到44313.

+1

我發現我不需要添加ida:Realm和ida:AudienceUri。相反,在Azure Active Directory中,如您所說,我: 1.去設置,然後回覆網址,並刪除localhost,將其更改爲我的重定向URI,2)在屬性中的主頁URL做了類似的更改。這是回覆網址,似乎是真正的區別。 –

相關問題