问题:
ADFS 2019 中有一些属性表明您可以为 ADFS 登录页面启用 CORS 标头并设置允许的来源。
Get-AdfsProperties
CORSEnabled : False
CORSTrustedOrigins :
但相应的Set-AdfsProperties
列表中没有实际设置这些属性的开关。
那么问题来了,如何设置这些属性呢?
全面披露:
我设法通过 SSMS 连接到 WID 并转储包含表中属性的 XML ServiceSettings
、更改适当的属性,然后更新 WID 中的 XML 来实际设置这两个选项。
Get-AdfsProperties
CORSEnabled : True
CORSTrustedOrigins : {https://localhost:5001, https://localhost:8081}
它可以工作。这对于我的测试目的来说没问题,但对于我目前正在设置的需要自动添加和删除属性值的 CI/CD 环境来说,这绝对不行 CORSTrustedOrigins
。
附加信息:
这些属性是 ADFS 2019 中的新属性,ADFS 4.0 不支持 CORS,运行该属性的唯一方法是在其前面放置一个反向代理,以在响应中放置正确的 CORS 标头。
我目前正在尝试该解决方案,但在那里也遇到了问题。但这对这个问题来说不算什么。
编辑1:
Microsoft.IdentityServer.Management
因此,由于我是一名好奇的开发人员,我开始在包含 cmdlet 的组件上使用 dotPeak Set-AdfsProperties
,并发现了一个有趣的现象。没有实现来设置CORSEnabled
和CORSTrustedOrigins
,并且似乎有方法可以将自定义标头添加到响应中,但这些方法也没有在 cmdlet 中实现。
因此,基本上没有办法真正使用这些宣传的功能。除非进入数据库直接更改 XML。在我看来,这有点疏忽。
答案1
万一其他人正在寻找它,您可以使用Set-AdfsResponseHeaders
powershell 命令进行设置
Set-AdfsResponseHeaders -EnableCORS $true
Set-AdfsResponseHeaders -CORSTrustedOrigins http://localhost, https://contoso.com
Get-AdfsProperties | select EnableCORS, CORSTrustedOrigins