6

我加入ADFS身份驗證的角度SPA網站用的WebAPI後端。爲了實現這一點,我使用客戶端和RP設置了ADFS實例。ADFS 3的OAuth 2 CORS錯誤

爲了登錄到用戶被重定向到sts.domain/ADFS /的oauth2 /授權端點SPA。用戶在網頁上進行身份驗證並重定向到應用程序中的頁面 - www.domain/token/redirect.html?code = SOMECODE & state = URL

此頁面從URL參數中提取令牌並調用sts .domain/adfs/oauth2/token端點來獲取WebApi後端的JWT標記。

var url = "https://sts.domain/adfs/oauth2/token"; 
$.ajax(url, { 
type: "POST", 
data: { 
grant_type: "authorization_code", 
client_id: client, 
redirect_uri: redirect, 
code: token 
} 
}) 

然後應用程序將保存的WebAPI令牌,並將其添加到角$ http.defaults.headers.common.Authorization,這樣它會被用來與後端的WebAPI溝通。然後它重新導向SPA。

這一切都正常工作在IE,但它在Firefox和Chrome調用/令牌的OAuth端點時失敗,並在標準CORS錯誤消息。

否請求的資源上存在「Access-Control-Allow-Origin」標頭。因此不允許訪問原產地'https://www.domain'。

看起來我應該將SPA URL添加到ADFS實例的CORS配置,但我找不到配置ADFS實例的CORS配置的方法。如何在ADFS 3.0 OAuth中配置CORS?有沒有不同的方式來完成這個更標準的任務?

+0

你有沒有在你的WebAPI後端配置一個Cors支持?如果這需要改變adfs,我會非常驚訝。 – DavidEdwards 2014-10-28 20:58:30

回答

2

我有同樣的問題。根據this,Microsoft不喜歡從客戶端檢索訪問令牌。因此,我跟着this來解決這個問題。基本上,在後端WebAPI中構建一個調用,以通過傳遞授權碼來檢索訪問令牌。

+0

非常感謝您的解答 – 2016-11-04 18:41:09