¿Por qué la validación de AntiForgeryToken sigue fallando?
Estoy desarrollando una webAPI
aplicación que se ejecuta usandoasp.net core2
yAngular
. La configuración detallada del entorno de desarrollo esaquí. Estoy tratando de configurarAntiForgeryToken
validación pero sigue fallando. Seguí la configuración.aquí, pero tuve que modificarlo ya que mi aplicación angular y los servidores asp.net se ejecutan en dos puertos diferentes porque el inicio del front-end no genera el token. Arranco el backend llamando a unAPI
camino (/api/Account/ContactInitialization
) en el componente de la aplicaciónngOnInit
lo que me permitió generar el token. La configuración se muestra a continuación,
IServiceCollection
Servicio:
services.AddAntiforgery(options =>
{
options.HeaderName = "X-CSRF-TOKEN";
options.SuppressXFrameOptionsHeader = false;
});
y enIApplicationBuilder 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. genera dos juegos de llaves,
Decoré mi método con[ValidateAntiForgeryToken]
e incluíXSRF-TOKEN
contenido de cookies en mi solicitud de encabezado. pero sigo recibiendo un400 (Bad Request)
respuesta después de llamar alAPI
! ¿que me estoy perdiendo aqui?
Método del controlador
[Authorize]
[ValidateAntiForgeryToken]
[HttpPost]
public IEnumerable<string> AutherizeCookie()
{
return new string[] { "Hello", "Auth Cookie" };
}
mi solicitud de encabezado detallada se ve a continuación,