Asp.net core 在ASP.NET Core中设置CORS,以允许不带auth的通配符源代码和带auth的白名单域

Asp.net core 在ASP.NET Core中设置CORS,以允许不带auth的通配符源代码和带auth的白名单域,asp.net-core,cors,Asp.net Core,Cors,我有一个API,它提供了一个文档列表,这些文档大部分是公开的。它们通过第一方SPA浮出水面,也可嵌入其他网站。因此,我需要允许CORS中的所有起源 但是,有些文档受到限制,需要身份验证(为此,我在授权标题中使用了一个承载令牌)。因此,我还必须允许CORS中的凭据。(请注意,只有公共文档是可嵌入的,因此嵌入时不需要身份验证。) 是否可以在ASP.NET Core中配置此功能 如果我允许凭据,我就不能允许通配符域 如果我不允许凭据,那么AFAIK第1方SPA将不会向已登录用户发送必要的授权 如果我

我有一个API,它提供了一个文档列表,这些文档大部分是公开的。它们通过第一方SPA浮出水面,也可嵌入其他网站。因此,我需要允许CORS中的所有起源

但是,有些文档受到限制,需要身份验证(为此,我在
授权
标题中使用了一个承载令牌)。因此,我还必须允许CORS中的凭据。(请注意,只有公共文档是可嵌入的,因此嵌入时不需要身份验证。)

是否可以在ASP.NET Core中配置此功能

  • 如果我允许凭据,我就不能允许通配符域
  • 如果我不允许凭据,那么AFAIK第1方SPA将不会向已登录用户发送必要的授权
  • 如果我动态允许任何域(使用
    SetIsOriginAllowed
    并始终返回
    true
    ),那么如果嵌入API数据的第三方网站易受XSS攻击,我会打开漏洞
在我看来,我需要的是允许通配符来源而不进行身份验证,并允许特定(第1方)来源而进行身份验证

如果没有合适的解决方案,但有很好的解决办法,请让我知道

我能想到的可能解决办法:

  • 使用不同的基本URL和CORS配置部署两次API(更复杂的devops)
  • 动态允许任何具有凭据的来源(安全问题,请参阅前面的注释)
  • 动态允许任何具有凭据的来源,但手动阻止来自非白名单来源(非标准、黑客)的经过身份验证的请求
  • 禁止CORS中的凭据,并对承载令牌(来自SPA)使用非标准身份验证头。这会导致安全问题吗

如果相关的话,我会使用F#和长颈鹿。

针对不同行动方法的不同CORS政策是可能的解决方案吗?您可以使用不同的策略在一个端点上为公共文档提供服务,在另一个端点上为安全文档提供服务。不确定这是否可能。所以你在用。。。F#?将其添加到标记中可能是一个好主意。在我看来,这是一些有价值的信息。尽管Giraffe本身只是asp.net核心管道的中间件,但我不知道如何在该框架或语言中使用现有功能。最后添加了一句话。