angularjs - ADFS 3 OAuth 2 CORS 错误

标签 angularjs asp.net-web-api oauth adfs single-page-application

我正在向具有 WebApi 后端的 Angular SPA 网站添加 ADFS 身份验证。为了实现此目的,我使用客户端和 RP 设置了 ADFS 实例。

为了登录 SPA,用户将被重定向到 sts.domain/adfs/oauth2/authorize 端点。用户在网页上进行身份验证并被重定向到应用程序内的页面 - www.domain/token/redirect.html?code=SOMECODE&state=URL

此页面从 URL 参数中提取 token ,并调用 sts.domain/adfs/oauth2/token 端点以获取 WebApi 后端的 JWT token 。

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 token 并将其添加到 Angular $http.defaults.headers.common.Authorization,以便将其用于与 WebApi 后端进行通信。然后它重定向回 SPA。

这在 IE 中一切正常,但在 Firefox 和 Chrome 中失败,并在调用/token OAuth 端点时显示标准 CORS 错误消息。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.domain' is therefore not allowed access.

似乎我应该将 SPA URL 添加到 ADFS 实例的 CORS 配置中,但我找不到配置 ADFS 实例的 CORS 配置的方法。如何在 ADFS 3.0 OAuth 中配置 CORS?有没有更标准的不同方法来完成这项任务?

最佳答案

我也遇到了同样的问题。根据this ,微软不喜欢从客户端检索访问 token 。因此,我关注了this来解决问题。基本上,在后端 WebAPI 中构建一个调用,通过传递授权代码来检索访问 token 。

关于angularjs - ADFS 3 OAuth 2 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222699/

相关文章:

javascript - AngularJS 多次加载构造函数

Azure Active Directory JWT aud 值

javascript - AWS 认知 : getting "Please provide a valid public provider" with google

javascript - 无法使用 Angular 和 Spring 触发有效请求

angularjs - 在配置 block 之外使用 Angular compileProvider

asp.net-mvc - 使用一种识别服务保护 2 个不同的 Web 应用程序

c# - 如何在 webapi 构造函数中获取主要用户?

ASP.NET Web Api session 与静态变量

javascript - 通过 postman/Shopify API 创建 Shopify 订单

javascript - 当没有属性时如何调用指令?