我加入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?有沒有不同的方式來完成這個更標準的任務?
你有沒有在你的WebAPI後端配置一個Cors支持?如果這需要改變adfs,我會非常驚訝。 – DavidEdwards 2014-10-28 20:58:30