我加入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