Получение статуса 400 из ASPNET.CORE с помощью AntiforgeryToken - PullRequest
0 голосов
/ 27 июня 2018

У меня угловое 4 приложение с .net core Api. Я хочу поставить на некоторые конечные точки проверку Анти-подделки. Таким образом мне удалось получить токен в браузере куки.

Это startup.cs - Настройка:

if (env.IsDevelopment())
{
}

app.UseDeveloperExceptionPage();

app.UseCors("AllowAll");
app.Use(next => context =>
{
    string method = context.Request.Method;
    if (method == "GET")
    {
        var tokens = antiforgery.GetAndStoreTokens(context);
        context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
             new CookieOptions()
             {
                 HttpOnly = false,

             });
    }
    return next(context);

});

А это из ConfigureServices:

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme =
                               JwtBearerDefaults.AuthenticationScheme;

    options.DefaultChallengeScheme =
                               JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
    o.Authority = Configuration["IdentityServer"];
    o.Audience = "MyApi";
    o.RequireHttpsMetadata = false;

});

services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
    builder.AllowAnyOrigin()
           .AllowAnyMethod()
           .AllowAnyHeader()
           .AllowCredentials();
}));

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

Это в контроллере:

[Authorize]
[ValidateAntiForgeryToken]
[HttpPost, Route("irrelevant")]
public IActionResult CalledByTheFront([FromBody] irrelevant)
{
    return Ok("irrelevant");
}

куки, которые я нашел в браузере enter image description here

И запрос: enter image description here

Что я делаю не так? Постскриптум Кроме того, знаете ли вы, почему файлы cookie в браузере обновляются только при перезапуске API, хотя каждый запрос GET имеет файл cookie в заголовке?

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