7

我正在尝试使用 ADFS(本地)设置我们的 Angular SPA + .ASPNET Core API 以摆脱 Windows 身份验证。最终目标是:

  • Angular SPA -> 将用户重定向到 ADFS 并接收 id_token
  • Angular SPA -> 使用此令牌调用 API
  • Angular SPA - > 不时刷新令牌

在 ADFS 上正确配置了 Angular SPA 和 API。我正在使用angular-oauth2-oidc来配置水疗中心。

问题是:加载 SPA 时,当 SPA 尝试到达 OpenId Discovery 端点 ( .well-known/openid-configuration) 时,我收到 CORS 错误。所以我什至无法将用户重定向到 ADFS。没有任何效果。

我在网上看了很多,只发现很多其他人说 ADFS 不支持 CORS。不过看起来很奇怪。Microsoft 声称他们支持单页应用程序,因此您已经或多或少假设 ADFS 将接收 CORS 请求。

有没有其他人碰到过这个问题?说真的,微软已经实现了这一点并且没有以允许 CORS 请求的方式构建?

编辑:我还尝试围绕 adal.js 创建一个包装器。我设法将用户重定向到 ADFS,登录并获取 id_token。现在的问题是 stsaud在令牌中返回 spa 的声明,而不是 api。当 SPA 使用令牌调用 API 时,它按预期失败。感觉我在这方面遇到了死胡同。

4

1 回答 1

3

在 ADFS 2016 中不可能,在 ADFS 2018(到目前为止)中没有解决。

https://social.technet.microsoft.com/Forums/en-US/efcb35b3-f0f6-4c83-8a34-8e939aa56e7f/adding-cors-headers-to-oidc-discovery-endpoint-in-adfs-2016?forum= ADFS

杰夫

于 2017-11-27T15:44:02.647 回答