从 SPA (Angular) 从 ADFS 请求令牌时如何修复 CORS?
How to fix CORS when requesting a token from ADFS from a SPA (Angular)?
我正在使用 OAuth2 code flow
授权一个 Angular 应用程序,使用 ADFS 作为授权服务器,但是当我尝试使用 post
请求到 ADFS 服务器的 /token
端点,请求被 CORS 阻止。我该如何修理帽子?
好吧,我认为至少有两种方法;
首先将 cors 安装为 angular 依赖项;
npm install cors --save
,然后在您的服务器中(假定 javascript)
var express = require('express')
,cors = require('cors')
, app = express();
如果不是,可能是两个端口之间 local/remote 中的通信问题;所以也许创建一个 prox.config.js 。这通常是默认设置。
根据需要更改,例如 tomcat 部署:
无法在 ADFS 4.0 (Server 2016) 及更低版本上更改 ADFS headers。
但是,ADFS 5.0(Server 2019)允许这样做,包括 support for CORS
我已经设法通过在我的 Angular 应用程序中添加 http interceptor
并仅针对对 ADFS 令牌端点的请求添加 CORS header 来解决问题,然后在 ADFS 方面,我启用了 CORS 并更新了允许来源列表。
我正在使用 Windows Server 2019,我通过以下方式启用 CORS:
Set-AdfsResponseHeaders -EnableCORS $true
Set-AdfsResponseHeaders -CORSTrustedOrigins https://example1.com,https://example2.com
参考:
我正在使用 OAuth2 code flow
授权一个 Angular 应用程序,使用 ADFS 作为授权服务器,但是当我尝试使用 post
请求到 ADFS 服务器的 /token
端点,请求被 CORS 阻止。我该如何修理帽子?
好吧,我认为至少有两种方法;
首先将 cors 安装为 angular 依赖项;
npm install cors --save
,然后在您的服务器中(假定 javascript)
var express = require('express')
,cors = require('cors')
, app = express();
如果不是,可能是两个端口之间 local/remote 中的通信问题;所以也许创建一个 prox.config.js 。这通常是默认设置。
根据需要更改,例如 tomcat 部署:
无法在 ADFS 4.0 (Server 2016) 及更低版本上更改 ADFS headers。
但是,ADFS 5.0(Server 2019)允许这样做,包括 support for CORS
我已经设法通过在我的 Angular 应用程序中添加 http interceptor
并仅针对对 ADFS 令牌端点的请求添加 CORS header 来解决问题,然后在 ADFS 方面,我启用了 CORS 并更新了允许来源列表。
我正在使用 Windows Server 2019,我通过以下方式启用 CORS:
Set-AdfsResponseHeaders -EnableCORS $true
Set-AdfsResponseHeaders -CORSTrustedOrigins https://example1.com,https://example2.com
参考: