¿Cómo se autentica un usuario con un token de acceso en Shopify?
Implementar un sistema de autenticación sólido es esencial para garantizar la seguridad y el buen funcionamiento de cualquier aplicación web. Uno de los métodos más comunes es el uso de tokens de acceso almacenados en cookies. Este método no solo es seguro, sino también muy eficaz para manejar sesiones de usuario. Aquí, te mostraré cómo hacerlo utilizando la API de Shopify.
¿Cómo crear un access token con la API de Shopify?
Empezamos creando un script dedicado para generar tokens de acceso. Para ello:
Organización del proyecto: Crea una nueva carpeta utils dentro del directorio source. Dentro de utils, añade una subcarpeta llamada out y un archivo create_access_token.js donde residirá el script para generar el token.
Uso de Postman: Nos dirigimos a Postman para crear el token de acceso. Necesitarás dos variables: el email y la contraseña del usuario. Al enviar esta consulta, recibirás un token de acceso que podrás implementar con cookies.
En este ejemplo, aseguramos que el token se almacene de forma segura en una cookie con opciones como httpOnly y sameSite: 'strict'.
¿Cómo se almacena el token en una cookie?
El siguiente paso es almacenar el token en una cookie una vez que lo obtienes. Next.js provee una herramienta útil y sencilla para manejar cookies en el servidor.
Instanciación de la cookie: Usa las capacidades de Next.js para gestionar las cookies. Crea un cookieStore y verifica la existencia del token antes de almacenar los datos de forma segura.
Protección de la cookie: Es esencial establecer prácticas seguras al configurar las cookies, como usar httpOnly para evitar el acceso del lado del cliente, y sameSite: 'strict' para limitar el uso de la cookie solo en tu sitio.
¿Cuáles son las consideraciones de seguridad y mejoras?
El sistema de autenticación que hemos visto es eficaz, pero siempre hay margen para mejorar la seguridad:
Encriptación de la cookie: Actualmente, el token de acceso se guarda en texto plano. Para protegerlo de posibles ataques y robo de identidad, considera encriptar la cookie para dificultar el acceso no autorizado.
Manejo de errores: Implementa estructuras try-catch para gestionar y solucionar errores de manera eficaz. Esto evita que la aplicación falle inesperadamente por fallas en la red o errores de autenticación.
Verificación de contraseñas: Mejora el flujo de registro asegurando que las contraseñas y sus confirmaciones coincidan antes de proceder con acciones importantes.
Estos consejos no solo incrementan la seguridad de tu aplicación, sino que también mejoran su fiabilidad y la experiencia del usuario.
Con estas herramientas en mano, tendrás un robusto sistema de autenticación mediante tokens de acceso. Te invitamos a seguir experimentando e implementando estas técnicas, ¡y no olvides seguir aprendiendo y mejorando tu aplicación día a día!
Leo muchos que dicen que ya no se debería usar mas las cookies o que los navegadores no aceptan mas las cookies. En realidad lo que se esta eliminando son las cookies de terceros. Se puede seguir utilizando las cookies como siempre se usaron.
Ya no se debería usar Cookies. Creo que es importante recalcar eso.
es raro que usen esta forma de auth.
next.js tiene una mejor forma de hacerlo.
evitas el uso de cookies y la vincuacion con google Facebook y otros es muy bueno y "fácil"
Hola Sergio! cómo se llama esa forma de la que hablas? quiero saber mas ya que los navegadores este 2024 ya no implementaran las cookies. Un abrazo!
Hola Sergio
El auth de next si usa cookies
A mi me dio el siugiente error a la hora de crear un usuario:
A mi me dio el mismo error, me imagino que se debe a que se ha tratado de crear varios usuario de manera muy rápida y el API ya te lo está denegando; solo debes de esperar un tiempo y se soluciona.
Tuve el mismo error, haz un console.log de customerCreate y ahí te darás cuenta que está fallando, en mi caso era que tenía que poner un número válido. Espero te sirva :)
bueno de esta forma yo no lo haría. Pero me imagino que no implementó la otra porque sino el curso hubiese tenido muchas mas clases, pero ahora se usa es excelente! tambien puedes agregar providers como: google, apple, github, etre otros.
Por si tuvieron el error de Error: Creating customer...
Hagan un console.log de customerCreate entre:
const { customerCreate } = await graphqlClient.request(createUserMutation, variables);
En mi caso el error que tenía era que tenía que enviar un número válido
ufff como me consto encontrar mi error. Lo dejo en los comentarios por si alguno mas le pasa. cuanod hacia el signup me daba un error y me cancelaba la peticion. El problema era justamente que en el handleSubmit me olvide el preventDefault.
const handleSubmit = async (event) => {
event.preventDefault();
const formData = new FormData(event.target);
await handleCreateUser(formData);
};
con esto funciono perfecto
Una consulta, es mejor usarlo de esta manera o desde next auth cómo recomienda la documentación?
Es mejor utilizar NextAuth.js para manejar la autenticación en Next.js, ya que proporciona una solución más completa y segura. La documentación recomienda su uso debido a sus características y facilidad de implementación.
Me genera un error, al momento de la redirección desde el servidor, usando el handlerCreateUser en un componente cliente, al enviar el formulario, como el ejemplo del video
SIIIIIIIIIIIIIIIIIIIIIIIIIII
Con el tema de las cookies, que otra validación adicional se puede implementar para que no se se facil de suplantar? en youtube es comun encontrar muchas cuentas que les robaron las cookies solo con poner elon muak live
Con el tema de las cookies, que otra validación adicional se puede implementar para que no se se facil de suplantar, en youtube es comun encontrar muchas cuentas que les robaron las cookies solo con poner elon muak live