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