ASP.NET Core 2.1 Безсерверный заголовок веб-приложения размером более 10240 байт - PullRequest
0 голосов
/ 10 января 2019

Я занимаюсь разработкой безсерверного основного веб-приложения asp при аутентификации cognito размер файла cookie очень велик и превышает ограничение в 10240 байт amazon .net создает файлы cookie asp.net, и они очень большие Я пытался использовать куки-файлы SessionStore, но AWS без сервера не поддерживает SessionStore, поэтому приложение сохраняет данные в куки-файлах при публикации веб-сайта

у кого-нибудь есть решение, как уменьшить размер в куки? или сохранить токены не так, как куки?

Спасибо

Спасибо

services.AddAuthentication (options => { //options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; //options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; //options.DefaultSignOutScheme = OpenIdConnectDefaults.AuthenticationScheme;

        })
        .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
        {
            //options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
            // if true - Javascript will not be able to read cookie.
            options.Cookie.HttpOnly = false;
            // required or else it will result in an endless-login
            options.Cookie.SameSite = SameSiteMode.None;
            options.Events.OnSigningIn = FilterGroupClaims;
            options.SessionStore = new MemoryCacheTicketStore();

        })
        .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
        {
            options.ResponseType = authOptions.Value.ResponseType;
            options.MetadataAddress = authOptions.Value.MetadataAddress;
            options.ClientId = authOptions.Value.ClientId;
            options.GetClaimsFromUserInfoEndpoint = true;
            options.ClientSecret = authOptions.Value.ClientSecret;
            options.SaveTokens = authOptions.Value.SaveTokens;
            options.UseTokenLifetime = false;

            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = authOptions.Value.TokenValidationParameters.ValidateIssuer
            };
            options.Events = new OpenIdConnectEvents()
            {
                OnRedirectToIdentityProvider = ctx =>
                {
                    if (!_currentEnvironment.IsEnvironment("Development"))
                    {
                        //Force scheme of redirect URI (THE IMPORTANT PART)
                        ctx.ProtocolMessage.RedirectUri = ctx.ProtocolMessage.RedirectUri.Replace("http://", "https://", StringComparison.OrdinalIgnoreCase);

                    }
                    bool isAjaxRequest = (ctx.Request.Headers != null && ctx.Request.Headers["X-Requested-With"] == "XMLHttpRequest");

                    if (isAjaxRequest)
                    {
                        ctx.Response.Headers.Remove("Set-Cookie");

                        //ctx.State = NotificationResultState.HandledResponse;
                    }
                    //ctx.HandleResponse();
                    return Task.FromResult(0);
                },
                OnRemoteFailure = context =>
                {
                    context.Response.Redirect("/Prod");
                    context.HandleResponse();
                    return Task.CompletedTask;
                },
                OnRedirectToIdentityProviderForSignOut = (context) =>
                {
                    var logoutUri = logOutUrl;
                    logoutUri += $"?client_id={clientId}&logout_uri={baseUrl}";
                    context.Response.Redirect(logoutUri);
                    CookieHelper.ClearCookies(context.Response);
                    context.HandleResponse();
                    return Task.CompletedTask;
                }
            };
        });

Это результат cookie https://i.imgur.com/iQb82GU.png

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