Получение «недопустимого состояния cookie» при попытке войти через твиттер в .NET Core Web API - PullRequest
0 голосов
/ 05 июля 2019

Я интегрировал аутентификацию Twitter в проект .NET Core WebAPI. Он перенаправляет на страницу входа в Twitter, но после этого при перенаправлении на URL «external-login-callback» выдает «недопустимое состояние cookie»

Я добавил AddCookie () и AddSession (), но ничего не помогло. Я обрабатываю страницу ошибки, создав событие OnRemoteFailure и перенаправив его на сайт переднего плана.


           services.AddAuthentication(x =>
           {
               x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
               x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
           })
               .AddCookie("ExternalCookies", options =>
               {
                   options.Cookie.Name = "external_auth_cookie";
                   options.Cookie.SameSite = SameSiteMode.None;
               })
               .AddFacebook(option =>
               {
                   option.AppId = Configuration["ExternalLogin:Facebook:AppId"];
                   option.AppSecret = Configuration["ExternalLogin:Facebook:AppSecret"];
               })
               .AddTwitter(options =>
               {
                   options.ConsumerKey = Configuration["ExternalLogin:Twitter:ConsumerKey"];
                   options.ConsumerSecret = Configuration["ExternalLogin:Twitter:ConsumerSecret"];
                   options.RetrieveUserDetails = true;
                   options.CallbackPath = new PathString(Configuration["ExternalLogin:Twitter:CallBackPath"]);
                   options.Events.OnRemoteFailure = ctx =>
                   {
                       ctx.Response.Redirect(Configuration["ExternalLogin:FeCallBackUrl"] + "?err=Login failed");
                       ctx.HandleResponse();
                       return Task.CompletedTask;
                   };
               })
               .AddJwtBearer(x =>
               {
                   x.RequireHttpsMetadata = false;
                   x.SaveToken = true;
                   x.TokenValidationParameters = new TokenValidationParameters
                   {
                       ValidIssuer = Configuration.GetValue<string>("Jwt:Issuer"),
                       ValidAudience = Configuration.GetValue<string>("Jwt:Audience"),
                       ValidateIssuerSigningKey = true,
                       IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(Configuration.GetValue<string>("Jwt:Secret"))),
                       ValidateIssuer = true,
                       ValidateAudience = false
                   };
               });```
...