Por que a validação do AntiForgeryToken continua falhando?
Estou desenvolvendo uma webAPI
aplicativo em execução usandoasp.net core2
eAngular
. A configuração detalhada do ambiente de desenvolvimento éaqui. Estou tentando configurarAntiForgeryToken
validação, mas continua falhando. Eu segui a configuração.aqui, mas tive que modificá-lo porque meus servidores angulares de aplicativos e asp.net estão sendo executados em duas portas diferentes porque a inicialização do front-end não gera o token. Eu chuto iniciar o back-end chamando umAPI
caminho (/api/Account/ContactInitialization
) no componente do aplicativongOnInit
o que me permitiu gerar o token. A configuração é mostrada abaixo,
IServiceCollection
Serviço:
services.AddAntiforgery(options =>
{
options.HeaderName = "X-CSRF-TOKEN";
options.SuppressXFrameOptionsHeader = false;
});
e emIApplicationBuilder Configure
:
app.Use(next => context =>
{
string path = context.Request.Path.Value;
if (
string.Equals(path, "/", StringComparison.OrdinalIgnoreCase) ||
string.Equals(path, "/api/Account/ContactInitialization", StringComparison.OrdinalIgnoreCase) ||
string.Equals(path, "/index.html", StringComparison.OrdinalIgnoreCase))
{
// We can send the request token as a JavaScript-readable cookie,
// and Angular will use it by default.
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions() { HttpOnly = false });
}
return next(context);
});
asp.net. gera dois conjuntos de chaves,
Decorei meu método com[ValidateAntiForgeryToken]
e eu incluíXSRF-TOKEN
conteúdo do cookie na minha solicitação de cabeçalho. ainda continuo recebendo um400 (Bad Request)
resposta após chamar oAPI
! O que estou perdendo aqui?
Método Controlador,
[Authorize]
[ValidateAntiForgeryToken]
[HttpPost]
public IEnumerable<string> AutherizeCookie()
{
return new string[] { "Hello", "Auth Cookie" };
}
minha solicitação detalhada de cabeçalho é exibida abaixo,