Primeros pasos
net/http de Go.
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:
Ver el archivo go.mod esperado
Ver el archivo go.mod esperado
go.mod
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:
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:
- Dominio
- ID de cliente
- Secreto del cliente

- Quick Setup (recomendado)
- CLI
- Dashboard
Crea una aplicación de Auth0 y copia el archivo
.env precompletado con los valores de configuración correctos.Crear el cliente de Auth0
Cree el archivo Qué hace esto:
auth.go. Este encapsula el cliente de autenticación go-auth0 y proporciona un asistente para generar la URL de autorización.auth.go
- Inicializa el cliente de autenticación
go-auth0con el dominio de tu inquilino, el ID de cliente y el secreto del cliente - Proporciona un asistente
AuthorizationURLque genera la URL de redirección/authorizecon los parámetros de OAuth2 necesarios
Crear manejadores de ruta
Crea el archivo Puntos clave:
handlers.go con los controladores para inicio de sesión, callback, perfil de usuario y cierre de sesión.handlers.go
- 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-auth0y luego llama aUserInfopara obtener el perfil del usuario - LogoutHandler borra la sesión y redirige al endpoint
/v2/logoutde Auth0 - UserHandler recupera el perfil de la sesión y muestra la plantilla
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:
- Redirige a los usuarios al Universal Login de Auth0 para autenticarse
- Intercambia el código de autorización por tokens mediante el SDK
go-auth0 - Recupera y muestra la información del perfil del usuario
- Admite el cierre de sesión con limpieza de los datos de sesión
Uso avanzado
Protección de rutas con middleware
Protección de rutas con middleware
Cree un middleware Aplique el middleware a las rutas protegidas en
IsAuthenticated para proteger las rutas que requieren autenticación. Agregue esto a su handlers.go:handlers.go
main.go:main.go
Llamar a una API protegida
Llamar a una API protegida
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:Renovar tokens
Renovar tokens
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 Para recibir un token de actualización, agregue
go-auth0:offline_access a los alcances en su URL de autorización:Solución de problemas
Problemas comunes y soluciones
Problemas comunes y soluciones
”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:- Verifica que
AUTH0_CLIENT_SECRETsea correcto en tu archivo.env - Asegúrate de que
AUTH0_CALLBACK_URLcoincida exactamente con Allowed Callback URLs en la configuración de tu aplicación de Auth0 - 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:- Asegúrate de que el scope
openidesté incluido en la URL de autorización - Verifica que el token de acceso sea válido y no haya expirado
- 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:- Asegúrate de que las cookies estén habilitadas en tu navegador
- Comprueba que el secreto del almacén de sesiones no haya cambiado entre solicitudes
- 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:- Verifica que
http://localhost:3000esté en Allowed Logout URLs en la configuración de tu aplicación de Auth0 - Asegúrate de que el parámetro
client_idcoincida con el ID de cliente de tu aplicación - Comprueba que la URL
returnTocoincida 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:- Asegúrate de llamar a
gob.Register(map[string]interface{}{})antes de almacenar datos - Comprueba que se llame a
session.Save(r, w)después de modificar los valores de la sesión - Verifica que la configuración del navegador no esté bloqueando las cookies
Siguientes pasos
- Perfiles de usuario — Conozca la información del usuario disponible después de la autenticación
- Configurar otros proveedores de identidad — Agregue opciones de inicio de sesión social o empresariales
- Habilitar la autenticación multifactor — Agregue una capa adicional de seguridad
- Prácticas recomendadas para tokens de acceso — Obtenga información sobre la seguridad de los tokens
- Lista de verificación de producción — Revisión de seguridad previa al lanzamiento
Recursos
- go-auth0 GitHub — Código fuente y documentación
- Ejemplo de aplicación web en Go — Ejemplo funcional completo
- Comunidad de Auth0 — Obtén ayuda de la comunidad