未配置Identity Server 4 CORS

时间:2018-11-23 15:23:56

标签: c# cors asp.net-core-mvc identityserver4

我已将IS4放在服务器上,并称之为http://test.myis4.com。现在,我正在尝试使用针对它的有角度的应用程序登录,但是我一直被CORS阻止。角度客户端由MVC Core应用程序提供服务,并在http://localhost:5002端口上运行。我试图在本地主机上通过在该端口上运行它来做到这一点。

在IS4服务器上,我尝试在客户端上添加以下内容:

new Client {
    // code is omitted
    AllowedCorsOrigins = new List<string>() { "http://localhost:5002" }
}

通过上述操作,我仍然收到CORS错误,然后尝试将其添加到服务目录中:

var cors = new DefaultCorsPolicyService(null)
{
    AllowedOrigins = { "http://localhost:5002" }
};
services.AddSingleton<ICorsPolicyService>(cors);
services.AddIdentityServer()
//rest omitted

上面的代码仍然给了我同样的CORS错误,我最后的尝试是通过应用程序生成器将其添加为这样:

app.UseCors(builder => builder.WithOrigins("http://localhost:5002").AllowAnyHeader());
app.UseIdentityServer();
//rest omitted

最后一次尝试仍然无效。现在,我不确定我在做什么错。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在已显示的第二个代码块上,您需要首先AddIdentityServer(),然后添加Cors Policy服务,还可以在将Identity Server添加到服务之后直接进行操作。像这样:

services.AddIdentityServer(options =>
        {
            // .. if you need something in general (can go without the options)
        })
        .AddCorsPolicyService<YOUR_IMPLEMENTATION_OF_ICorsPolicyService>()
        // rest omitted

这是因为AddIdentitiyServer()覆盖了CORS服务-Code的添加。