ADFS 2016 - OpenID Connect Discovery Endpoint 的 CORS 问题

Posted

技术标签:

【中文标题】ADFS 2016 - OpenID Connect Discovery Endpoint 的 CORS 问题【英文标题】:ADFS 2016 - CORS issue for OpenID Connect Discovery Endpoint 【发布时间】:2018-05-08 16:15:49 【问题描述】:

我正在尝试使用 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 声称他们支持Single Page Applications,因此您已经或多或少假设 ADFS 将接收 CORS 请求。

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

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

【问题讨论】:

嗨,我遇到了同样的死胡同,你终于找到解决这个问题的方法了吗? 或多或少..我设法使用adaljs使其工作。这是很久以前的事了..我不再做它了..不能分享太多细节:(。但是你可以搜索 angular adal 包,很确定这是第一个结果之一。 【参考方案1】:

在 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

杰夫

【讨论】:

在 2019 年解决,未经测试,因为我被困在 2016 年 docs.microsoft.com/en-us/windows-server/identity/ad-fs/…

以上是关于ADFS 2016 - OpenID Connect Discovery Endpoint 的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助使用 React-native、Spring Rest Api 和 ADFS 4.0 实施 OpenID 连接/OAuth2 流

Windows Server 2016 安装及配置 ADFS 4.0

微信服务号获得openid 跟用户信息

Web Api 如何在隐式(或授权)授权流(OpenId)中验证令牌?

在windows server 2016申请ADFS证书

关于ADFS Server 2016的Oauth2的几个问题