Dotnet Core身份验证CorrelationFailed

时间:2018-01-27 14:11:45

标签: authentication .net-core openid-connect identityserver3

我正在尝试在全新的dotnet核心应用上设置身份验证。 我正在使用IdentityServer,因为它正在用于其他应用程序。

我收到的错误并不比“相关失败”更多。 查看VS2017中的输出,我会在异常之前看到一个警告,说明如下:

  

Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler:警告:   .AspNetCore.Correlation。未找到州财产。

这是我的配置:

    public void ConfigureServices(IServiceCollection services)
    {
        Debugger.Break();
        services.AddMvc();

        services.AddAuthentication(options =>
            {
                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            })
            .AddCookie(options =>
            {
                options.SlidingExpiration = true;
                options.Cookie.Name = "MyAwesomeCookie";
                options.ExpireTimeSpan = TimeSpan.FromMinutes(30);

            })
            .AddOpenIdConnect(options =>
            {
                options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.Authority = IdentityServerConstants.IdentityServerUrl;
                options.ClientId = "myclientid";
                options.ClientSecret = "supersecuresecret";

                //options.CorrelationCookie.Name = "something";

                foreach (var s in myScopes)
                {
                    options.Scope.Add(s);
                }
                options.ResponseType = "code id_token token";
                options.CallbackPath = new PathString("/");

                options.UseTokenLifetime = false;
                options.RequireHttpsMetadata = false;


            });
    }

出于安全原因,我修改了一些值,并且我排除了事件,因为我认为这是无关紧要的。

我可以追踪到这个文件: https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication/RemoteAuthenticationHandler.cs

如果此文件的最后一个方法返回false,则会出现“Correlation Failed”错误。

然而,我花了很长时间在谷歌上搜索错误,但无法找到解决方法。我可能在配置中遗漏了一些微不足道的东西......

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

我没有解释为什么会出现这种情况,但我遇到了同样的错误并设法通过删除此行来解决此问题:

    options.CallbackPath = new PathString("/");

答案 1 :(得分:0)

我遇到了此问题,原因是在RouteOptions中设置了以下选项:

options.LowercaseQueryStrings = true;

这导致执行返回到应用程序的重定向时,state查询参数小写。由于状态区分大小写,因此会导致state property not found错误。