DefaultAuthenticationSchemes препятствуют созданию идентификационного куки в ядре dotnet - PullRequest
0 голосов
/ 22 октября 2019

МЫ пользуемся приложением dotnet core 2.2 mvc. Мы можем войти в приложение. но после входа в систему дальнейший вызов для авторизации конечной точки не удался. Мне это как-то удалось, но он не усваивается.

После входа в систему я смог вызвать конечную точку авторизации, используя приведенный ниже код.

services.AddSession(options =>
        {
            options.IdleTimeout =
                       TimeSpan.FromMinutes(
                           Convert.ToDouble(systemParamsCollection[Constants.FederationSessionTimeOut]));
            options.Cookie.IsEssential = true;
            options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
            options.Cookie.Path = "/";                
        });

        services.AddAuthentication(action => 
        {                                 
            action.DefaultSignInScheme = "Cookies";               
        })
       .AddCookie("Cookies", options =>
       {
           options.Cookie.Name = ".netcorepersistent";
           options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
           options.DataProtectionProvider = DataProtectionProvider.Create("federationapp");
           options.DataProtectionProvider.CreateProtector("federationapp");
           options.Cookie.Path = "/";
           options.Cookie.IsEssential = true;
           options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;               
           options.Cookie.Expiration = TimeSpan.FromMinutes(
                           Convert.ToDouble(
                               systemParamsCollection[nameof(JwtTokenVerificationParameterModel.ValidFor)]));             
           options.ExpireTimeSpan =
                       TimeSpan.FromMinutes(
                           Convert.ToDouble(
                               systemParamsCollection[nameof(JwtTokenVerificationParameterModel.ValidFor)]));
           options.Validate();
           options.LoginPath = Constants.url1 + Constants.protocol + "Auth/actionName";
           options.Events = new CustomCookieAuthenticationEvents(
               saml2RequestHelper, metadataLoader, relyingPartyService, ilogger, config);
       });

Используя указанный выше код, мне удалось найти cookie в браузере с именем .netcorepersistent.

Поскольку я изменил код, как показано ниже:

services.AddSession(options =>
        {
            options.IdleTimeout =
                       TimeSpan.FromMinutes(
                           Convert.ToDouble(systemParamsCollection[Constants.FederationSessionTimeOut]));
            options.Cookie.IsEssential = true;
            options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
            options.Cookie.Path = "/";                
        });

        services.AddAuthentication(action => 
        {                                 
            action.DefaultSignInScheme = Constants.AuthenticationSchemeTypes.Cookies;
            action.DefaultAuthenticateScheme = Constants.AuthenticationSchemeTypes.Cookies;                
        })
       .AddCookie("Cookies", options =>
       {
           options.Cookie.Name = ".netcorepersistent";
           options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
           options.DataProtectionProvider = DataProtectionProvider.Create("federationapp");
           options.DataProtectionProvider.CreateProtector("federationapp");
           options.Cookie.Path = "/";
           options.Cookie.IsEssential = true;
           options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;               
           options.Cookie.Expiration = TimeSpan.FromMinutes(
                           Convert.ToDouble(
                               systemParamsCollection[nameof(JwtTokenVerificationParameterModel.ValidFor)]));             
           options.ExpireTimeSpan =
                       TimeSpan.FromMinutes(
                           Convert.ToDouble(
                               systemParamsCollection[nameof(JwtTokenVerificationParameterModel.ValidFor)]));
           options.Validate();
           options.LoginPath = Constants.url1 + Constants.Protocol + "Auth/actionname";
           options.Events = new CustomCookieAuthenticationEvents(
               saml2RequestHelper, metadataLoader, relyingPartyService, ilogger, config);
       });

При использовании этого кода в браузере отсутствует файл cookie с именем .netcorepersistent.

Не могли бы вы сообщить мне об этомв чем основная причина? Еще раз спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...