Как настроить CSRF и CORS с UI и API на отдельных хостах - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь настроить свой пользовательский интерфейс и API на отдельных хостах (например, www.example.com и api.example.com) вместе с защитой CSRF.

Я следовал документации MSFT (https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-2.2#configure-antiforgery-features-with-iantiforgery) и после Angular

ConfigureServices

      services.AddAntiforgery(options =>
      {
        options.HeaderName = "X-XSRF-TOKEN";
      });

      services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
      {
        builder.WithOrigins("https://www.example.com")
          .AllowAnyMethod()
          .AllowAnyHeader()
          .AllowCredentials();
      }));

Configure

      app.UseCors("CorsPolicy");

      app.Use(next => context =>
      {
        if (context.Request.Path.Value.IndexOf("/api", StringComparison.OrdinalIgnoreCase) != -1)
        {
          var tokens = antiforgery.GetAndStoreTokens(context);
          context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
                    new CookieOptions()
                    {
                      HttpOnly = false
                    });
        }

        context.Response.Headers.Remove("Server");

        return next(context);
      });
...