es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Persistir la cookie de una API de terceros

Tengo una API de autenticación que agrega un token de actualización a una cookie de solo HTTP.

Response.Cookies.Append("myRefresfToken", refreshToken, new Microsoft.AspNetCore.Http.CookieOptions
{
    SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None,
    Expires = DateTime.UtcNow.AddDays(1),
    HttpOnly = true,
    Secure = false,
    Domain = null,
    Path = "/oauth/v2.0/Authorization/"
});

Cuando mi sitio recibe la respuesta del punto final del Token, el encabezado set-cookie está presente. Sin embargo, al mirar el sitio con las herramientas de desarrollo, no puedo ver que se establezca la cookie. Además, cuando se realizan solicitudes a la API de autenticación, la cookie de token de actualización no está presente.

¿Cómo puedo establecer una cookie desde otra api para que mi cliente la almacene?

Gracias,
Travis

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hola Travis,

    Parece que estás teniendo un problema de limitación de scripting entre sitios web con tu API. Los navegadores web modernos están diseñados para evitar que las cookies se envíen entre dominios. Esta es una medida de seguridad destinada a proteger contra ataques de scripting entre sitios web.

    Si no ves que la cookie se establece, generalmente significa que el navegador no la está aceptando debido a la limitación del mismo dominio. Es posible que debas realizar algunos cambios en tu API para permitir que se establezca una cookie en el dominio de tu cliente.

    Puedes intentar cambiar el atributo SameSite a Lax en lugar de None. Esto permitirá que la cookie se envíe en la mayoría de los escenarios de scripting entre sitios web, al tiempo que previene algunos ataques. También debes asegurarte de que el dominio de tu cliente no esté establecido como null, sino configurado correctamente.

    Además, el atributo Secure debe establecerse como true, especialmente si has configurado HttpOnly como verdadero. Esto garantiza que la cookie solo se enviará a través de HTTPS.

    Si ninguna de las soluciones anteriores funciona, otra solución podría ser utilizar un enfoque basado en tokens en lugar de una cookie. Con un token, realizas una llamada a la API para obtener un token y los detalles necesarios, y luego en cada solicitud posterior, pasas ese token en el encabezado de tu solicitud. Este enfoque es más seguro ya que tu API nunca establece una cookie en el dominio del cliente.

    ¡Espero que esto te ayude! Déjame saber si tienes alguna otra pregunta.

    Saludos cordiales,
    [Tu nombre]

Comments are closed.