Маркер защиты от подделки не устанавливается в cookie при развертывании в Azure - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть две службы приложений: одна - угловое, а другая - приложение .NET core 2.0.Я создаю токен Antiforgery из последнего и присоединяю к заголовку для каждого запроса, чтобы он был установлен как cookie в первом.

Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
        services.AddAntiforgery(options =>
        {
            options.HeaderName = "X-XSRF-TOKEN";
            options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
            options.Cookie.HttpOnly = false;
            options.Cookie.SameSite = SameSiteMode.None;

        });
        ...

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseCookiePolicy(new CookiePolicyOptions
        {
            MinimumSameSitePolicy = SameSiteMode.None
        });

        app.UseAntiforgeryTokenMiddleware("X-XSRF-TOKEN");
        ....

AntiForgeryMiddleware.cs

    public async Task Invoke(HttpContext context, IAntiforgery antiforgery, ILogger<AntiForgeryMiddleware> logger)
    {
        string path = context.Request.Path.Value;
        if (path != null && path.ToLower().Contains("/api/account/authorizeview"))
        {
            if (httpVerbs.Contains(context.Request.Method, StringComparer.OrdinalIgnoreCase))
            {
                var tokens = antiforgery.GetAndStoreTokens(context);

                context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions()
                {
                    HttpOnly = false, 
                    Secure = true
                });
            } 
        }
        context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");

        await next.Invoke(context);
    }

В приложении Angular установлено withCredentials: true.Это работает в localhost, но при развертывании в Azure файлы cookie не установлены в Chrome.В Microsoft Edge файлы cookie отображаются в виде снимка экрана в ответе, но не в хранилище приложения.

enter image description here

1 Ответ

0 голосов
/ 14 декабря 2018

Мы не можем получить доступ к файлам cookie из поддоменов, где верхний домен - azurewebsites.net, поскольку он указан в общедоступном списке префиксов.

Дополнительные сведения: ASP.NET5, MVC 6: Файлы cookie не передаютсяпо сайтам

...