Saltar al contenido principal
Requisitos previos: Antes de empezar, asegúrese de tener instalado lo siguiente:
  • Go 1.25 o una versión posterior
  • Git para el control de versiones
Verifique la instalación: go version

Primeros pasos

En esta guía de inicio rápido, aprenderás a agregar autenticación de Auth0 a una aplicación web en Go. Crearás una aplicación del lado del servidor con funciones de inicio de sesión, cierre de sesión y perfil de usuario mediante el SDK go-auth0 y la biblioteca estándar net/http de Go.
1

Crear un nuevo proyecto

Cree un directorio nuevo para su aplicación Go e inicialice un módulo.
Instala las dependencias requeridas:
Cree la estructura del proyecto:
go.mod
2

Configura tu aplicación en Auth0

Para usar los servicios de Auth0, necesitas una aplicación configurada en el Auth0 Dashboard. En la aplicación de Auth0 configuras la autenticación de tu proyecto.Necesitas la siguiente información de la pestaña Settings de tu aplicación:
  • Dominio
  • ID de cliente
  • Secreto del cliente
Dashboard de la aplicación
Tienes tres opciones para configurar tu aplicación de Auth0: usar la herramienta Quick Setup (recomendado), ejecutar un comando de la CLI o configurarla manualmente desde el Dashboard:
Crea una aplicación de Auth0 y copia el archivo .env precompletado con los valores de configuración correctos.
Verifica que tu archivo .env exista: cat .env (Mac/Linux) o type .env (Windows)
3

Crear el cliente de Auth0

Cree el archivo auth.go. Este encapsula el cliente de autenticación go-auth0 y proporciona un asistente para generar la URL de autorización.
auth.go
Qué hace esto:
  • Inicializa el cliente de autenticación go-auth0 con el dominio de tu inquilino, el ID de cliente y el secreto del cliente
  • Proporciona un asistente AuthorizationURL que genera la URL de redirección /authorize con los parámetros de OAuth2 necesarios
4

Crear manejadores de ruta

Crea el archivo handlers.go con los controladores para inicio de sesión, callback, perfil de usuario y cierre de sesión.
handlers.go
Puntos clave:
  • LoginHandler genera un parámetro de estado aleatorio para proteger contra CSRF y redirige al Universal Login de Auth0
  • CallbackHandler intercambia el code de autorización por tokens con go-auth0 y luego llama a UserInfo para obtener el perfil del usuario
  • LogoutHandler borra la sesión y redirige al endpoint /v2/logout de Auth0
  • UserHandler recupera el perfil de la sesión y muestra la plantilla
5

Crear plantillas HTML

templates/home.html
6

Cree el servidor principal

Integra todo en main.go:
main.go
7

Ejecuta y prueba tu aplicación

Inicia el servidor de desarrollo:
Deberías ver lo siguiente: Server listening on http://localhost:3000/Abre http://localhost:3000 en tu navegador. Haz clic en Sign In para que se te redirija a la página de Universal Login de Auth0. Después de autenticarte, volverás a tu aplicación y verás la información de tu perfil.
Si el puerto 3000 ya está en uso, actualiza AUTH0_CALLBACK_URL en tu archivo .env, y Allowed Callback URLs y Allowed Logout URLs en la configuración de tu aplicación de Auth0 para usar el nuevo puerto.
Punto de controlAhora debería tener una aplicación web en Go totalmente funcional con autenticación de Auth0 ejecutándose en su localhost. Su aplicación:
  1. Redirige a los usuarios al Universal Login de Auth0 para autenticarse
  2. Intercambia el código de autorización por tokens mediante el SDK go-auth0
  3. Recupera y muestra la información del perfil del usuario
  4. Admite el cierre de sesión con limpieza de los datos de sesión

Uso avanzado

Cree un middleware IsAuthenticated para proteger las rutas que requieren autenticación. Agregue esto a su handlers.go:
handlers.go
Aplique el middleware a las rutas protegidas en main.go:
main.go
Después de autenticarse, puede usar el token de acceso almacenado en la sesión para llamar a una API protegida:
Para solicitar un token de acceso para su API, agregue el parámetro audience a la URL de autorización en auth.go:
Si su aplicación usa tokens de actualización, puede intercambiar un token de actualización por un nuevo conjunto de tokens con el SDK go-auth0:
Para recibir un token de actualización, agregue offline_access a los alcances en su URL de autorización:

Solución de problemas

”No se pudo intercambiar el código de autorización por un token”

Problema: El manejador de callback no puede intercambiar el código de autorización.Soluciones:
  1. Verifica que AUTH0_CLIENT_SECRET sea correcto en tu archivo .env
  2. Asegúrate de que AUTH0_CALLBACK_URL coincida exactamente con Allowed Callback URLs en la configuración de tu aplicación de Auth0
  3. Comprueba que el código de autorización no haya expirado (los códigos son de un solo uso y de corta duración)

“No se pudo obtener la información del usuario”

Problema: El endpoint /userinfo devuelve un error.Soluciones:
  1. Asegúrate de que el scope openid esté incluido en la URL de autorización
  2. Verifica que el token de acceso sea válido y no haya expirado
  3. Comprueba la conectividad de red con tu dominio de Auth0

”Parámetro state no válido”

Problema: El parámetro state en el callback no coincide con la sesión.Soluciones:
  1. Asegúrate de que las cookies estén habilitadas en tu navegador
  2. Comprueba que el secreto del almacén de sesiones no haya cambiado entre solicitudes
  3. Verifica que no estés usando varias pestañas del navegador durante el flujo de inicio de sesión

Los usuarios no pueden cerrar sesión

Problema: Después de hacer clic en cerrar sesión, los usuarios ven una página de error de Auth0.Soluciones:
  1. Verifica que http://localhost:3000 esté en Allowed Logout URLs en la configuración de tu aplicación de Auth0
  2. Asegúrate de que el parámetro client_id coincida con el ID de cliente de tu aplicación
  3. Comprueba que la URL returnTo coincida exactamente con una de las URL de cierre de sesión permitidas

Los datos de la sesión no se conservan

Problema: Los datos del perfil del usuario desaparecen entre solicitudes.Soluciones:
  1. Asegúrate de llamar a gob.Register(map[string]interface{}{}) antes de almacenar datos
  2. Comprueba que se llame a session.Save(r, w) después de modificar los valores de la sesión
  3. Verifica que la configuración del navegador no esté bloqueando las cookies

Siguientes pasos

Ahora que ya tiene la autenticación en funcionamiento, considere consultar lo siguiente:

Recursos