2014-10-10 288 views
0

背景: 我們有一個WebAPI與Azure ACS和ADFS進行身份驗證。使用ACS進行離子/科爾多瓦認證

通過瀏覽器訪問任何WebAPI資源將通過ACS將未經身份驗證的用戶重定向到ADFS登錄頁面。成功登錄後,用戶將被重定向爲返回Url,並在安全令牌中設置ACS。這工作非常好。

問題: 我們正在開發一個使用Ionic框架(​​)的移動應用程序。我們希望利用相同的ACS和ADFS進行用於WebAPI的身份驗證。在這個過程中,我們面臨以下問題:

問題1: 通過移動應用程序訪問任何資源的WebAPI(離子型,科爾多瓦,angularjs)重定向用戶ACS,我們可以得到下面的錯誤。

的XMLHttpRequest無法加載的https:// {域名} .accesscontrol.windows.net/V2/wsfederation WA = WS ...... 52fitem & WCT = 2014-10-10T14%3a24%3a34Z & WHR = HTTPS%3A%2F %2F {域名} .COM。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。

因此,我們無法通過ACS使用移動應用程序對任何用戶進行身份驗證。

問題2: 在ACS中將返回URL設置爲空將引發以下錯誤。 ACS90050:沒有回覆地址與信賴方負責人聯繫。

到目前爲止採取的步驟: - >我們在WebAPI上啓用了CORS。

回答

0

我們向微軟提交了票證,看看是否可以在ACS上啓用CORS。我們得到了答覆。

ACS沒有提供我們研究可能性的CORS解決方案。不幸的是,答案仍然是:「沒有ACS不提供CORS解決方案」。也就是說,ACS不允許我們訪問標準跨域解決方案的根目錄。此外,提供令牌被認爲是HTTPOnly,因爲用Javascript操縱令牌本質上是危險的。

有一個樣本可以提供指導,如果你想追求這條路,雖然它不被推薦,因爲安全方面。下載網址中的樣本:

Windows Azure的AD訪問控制(ACS)代碼樣本: https://code.msdn.microsoft.com/Windows-Azure-AD-Access-0dcde385

樣本下:C#\ web服務\ ACS2WindowsPhoneSample可以提供一些指導,但我們將無法協助修改例子。