IdentityServer3 令牌验证 - 访问令牌范围不足后 EmitCorsResponseHeaders 出现异常

IdentityServer3 Token Validation - Exception in EmitCorsResponseHeaders after insufficient scope in access token

我已经根据这里的指南建立了一个基本的WebApi项目https://identityserver.github.io/Documentation/docsv2/overview/jsGettingStarted.html

如果我在令牌中传递正确的 api 范围,令牌验证就可以正常工作,但如果不包含它(如果用户拒绝访问),那么它将继续按预期向响应添加 403 .

在 EmitCorsResponseHeaders (ScopeRequirementMiddleware.cs) 中添加 CORS headers 但抛出异常 -

[ArgumentException: The key 'Access-Control-Allow-Origin' is already present in the dictionary.]
Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.Add(String key, String[] value) +178
IdentityServer3.AccessTokenValidation.ScopeRequirementMiddleware.EmitCorsResponseHeaders(IDictionary`2 env) in c:\local\identity\server3\AccessTokenValidation\source\AccessTokenValidation\Plumbing\ScopeRequirementMiddleware.cs:97

这应该发生还是我错过了什么? app.UseCors(CorsOptions.AllowAll) 在 startup.cs 中设置,如入门指南中所述。

谢谢

这里确实有问题,但我不太确定如何解决它。

ScopeRequirementMiddleware 尝试在响应中设置 Allow-Access-Control-Origin header,但只有在未满足中间件中设置的范围要求时才会这样做。

这显然与我们早先在 OWIN 管道中已经设置了这个特定 header.

的 CORS 中间件这一事实相冲突

我不确定为什么范围要求中间件在这种特定情况下设置这些 headers,我将在 GitHub 和 link 上创建一个问题返回这里能见度。