Skip to Content

Inicio rápido

Esta guía te lleva paso a paso por la integración de la autenticación de Auris en tu aplicación desde cero. Al final tendrás un flujo de inicio de sesión funcional que redirige a los usuarios a la página de inicio de sesión alojada por Auris, gestiona el callback y muestra la información del usuario autenticado.

Tiempo estimado: 5–10 minutos.


Requisitos previos

  • Node.js 20+ (para integraciones con JavaScript, React y Next.js)

  • PHP 7.4+ con Composer (para integraciones PHP)

  • Una cuenta Auris — regístrate en la URL de tu Consola Auris

  • Un proyecto de aplicación existente al que quieras añadir autenticación


Paso 1: Crear una aplicación en la consola

Antes de instalar ningún SDK, registra tu aplicación en Auris para que reciba un Client ID.

  1. Inicia sesión en la Consola Auris.

  2. Ve a Aplicaciones en la barra lateral.

  3. Haz clic en Crear aplicación.

  4. Selecciona el tipo de aplicación:

    • WEB — para aplicaciones basadas en navegador (React, Next.js, Vue, Angular, renderizado en servidor)

    • MOBILE — para aplicaciones nativas iOS o Android

    • M2M — para integraciones servidor a servidor o herramientas CLI (sin inicio de sesión de usuario)

  5. Introduce un nombre descriptivo para tu aplicación (p. ej., Mi App - Desarrollo).

  6. Añade tu URI de redirección — la URL a la que Auris redirigirá tras un inicio de sesión exitoso:

    • Desarrollo local: http://localhost:3000/callback

    • Producción: https://tudominio.com/callback

  7. Haz clic en Crear.

Tras la creación, copia tu Client ID desde la página de detalle de la aplicación. Lo necesitarás en los siguientes pasos.

Nunca expongas tu Client Secret en JavaScript del lado del navegador. Para los tipos de

aplicación WEB y MOBILE, Auris usa PKCE (Proof Key for Code Exchange) y no requiere un

client secret. Los client secrets solo se usan para aplicaciones M2M (client_credentials)

que se ejecutan en el servidor.


Paso 2: Instalar el SDK

Elige el SDK que se corresponda con tu stack. Todos los paquetes están publicados en npm (JavaScript/TypeScript) o Packagist (PHP).

npm install @auris/nextjs @auris/react @auris/js

@auris/nextjs re-exporta todo desde @auris/react y @auris/js, por lo que solo necesitas

una ruta de importación en un proyecto Next.js.


Paso 3: Configurar Auris

Inicializa el cliente Auris con el dominio de tu tenant y el Client ID de la aplicación.

Añade AurisProvider a tu layout.tsx raíz. El provider gestiona el almacenamiento de tokens, el refresco y el contexto de estado de autenticación para todos los componentes hijos.

// app/layout.tsx import { AurisProvider } from '@auris/nextjs' export default function RootLayout({ children, }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <AurisProvider domain="https://auth.tudominio.com" clientId="TU_CLIENT_ID" redirectUri="http://localhost:3000/callback" > {children} </AurisProvider> </body> </html> ) }

Luego añade el middleware de Auris para proteger rutas. Crea o actualiza middleware.ts en la raíz del proyecto:

// middleware.ts import { aurisMiddleware } from '@auris/nextjs/middleware' export default aurisMiddleware({ domain: process.env.AURIS_DOMAIN!, clientId: process.env.AURIS_CLIENT_ID!, // Rutas que requieren autenticación protectedPaths: ['/dashboard', '/settings', '/profile'], // Rutas que omiten las comprobaciones de autenticación (el callback OAuth debe ser público) publicPaths: ['/callback', '/login', '/'], }) export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], }

Reemplaza https://auth.tudominio.com con la URL real de tu tenant Auris y TU_CLIENT_ID con el Client ID del Paso 1.


Paso 4: Añadir un botón de inicio de sesión

Inicia el flujo de inicio de sesión redirigiendo al usuario a la página de inicio de sesión alojada por Auris.

// components/LoginButton.tsx 'use client' import { useAuris } from '@auris/nextjs' export function LoginButton() { const { loginWithRedirect } = useAuris() return ( <button onClick={() => loginWithRedirect()}> Iniciar sesión </button> ) }

Para enviar al usuario a una página específica tras la autenticación, guarda el destino antes de redirigir y léelo de vuelta en tu página de callback:

sessionStorage.setItem('returnTo', '/dashboard') loginWithRedirect()

Paso 5: Gestionar el callback

Después de que el usuario se autentique, Auris lo redirige de vuelta a tu redirectUri con un código de autorización. Tu aplicación debe intercambiar este código por tokens.

Crea una página de callback en la ruta que coincida con tu redirectUri. El SDK @auris/nextjs gestiona el intercambio de código automáticamente cuando detecta el parámetro code en la URL.

// app/callback/page.tsx 'use client' import { useEffect } from 'react' import { useRouter } from 'next/navigation' import { useAuris } from '@auris/nextjs' export default function CallbackPage() { const { isAuthenticated, isLoading, error } = useAuris() const router = useRouter() useEffect(() => { // AurisProvider completa el intercambio de código automáticamente al montarse. // Cuando la sesión está lista, sal de la página de callback. if (!isLoading && isAuthenticated) { router.replace('/dashboard') } }, [isLoading, isAuthenticated, router]) if (error) { return <p>Error al iniciar sesión: {error.message}</p> } return <p>Completando inicio de sesión...</p> }

Paso 6: Mostrar información del usuario

Una vez autenticado, recupera y muestra el perfil del usuario actual.

// app/dashboard/page.tsx 'use client' import { useUser, useAuris } from '@auris/nextjs' export default function DashboardPage() { const { user, isLoading } = useUser() const { isAuthenticated } = useAuris() if (isLoading) { return <p>Cargando...</p> } if (!isAuthenticated) { return <p>No has iniciado sesión.</p> } return ( <div> <h1>Bienvenido, {user?.firstName ?? user?.email}</h1> <p>Email: {user?.email}</p> <p>Roles: {user?.roles?.join(', ')}</p> </div> ) }

Para componentes de servidor, usa getSession en su lugar:

// app/dashboard/page.tsx (componente de servidor) import { getSession } from '@auris/nextjs/server' import { redirect } from 'next/navigation' export default async function DashboardPage() { const session = await getSession({ domain: process.env.AURIS_DOMAIN!, clientId: process.env.AURIS_CLIENT_ID!, }) if (!session) { // Redirige al inicio de sesión si el middleware no gestiona esta ruta redirect('/login') } return ( <div> <h1>Bienvenido, {session.firstName}</h1> </div> ) }

Paso 7: Añadir un botón de cierre de sesión

'use client' import { useAuris } from '@auris/nextjs' export function LogoutButton() { const { logout } = useAuris() return ( <button onClick={() => logout()}> {/* Gestiona la redirección post-logout en tu router */} Cerrar sesión </button> ) }

Variables de entorno

Almacena la configuración de Auris en variables de entorno, no en el código fuente:

# .env.local # Lado del cliente: usadas por AurisProvider en el bundle del navegador NEXT_PUBLIC_AURIS_DOMAIN=https://auth.tudominio.com NEXT_PUBLIC_AURIS_CLIENT_ID=tu_client_id_aqui # Lado del servidor: usadas por aurisMiddleware() y getSession() — nunca expuestas al navegador AURIS_DOMAIN=https://auth.tudominio.com AURIS_CLIENT_ID=tu_client_id_aqui # Solo para clientes M2M del lado del servidor (nunca expongas esto en el navegador) AURIS_CLIENT_SECRET=tu_client_secret_aqui # Para la verificación JWT sin una llamada de red (opcional, recomendado por rendimiento) AURIS_JWKS_URL=https://auth.tudominio.com/.well-known/jwks.json

Luego úsalas en la configuración de tu provider:

<AurisProvider domain={process.env.NEXT_PUBLIC_AURIS_DOMAIN!} clientId={process.env.NEXT_PUBLIC_AURIS_CLIENT_ID!} redirectUri={`${process.env.NEXT_PUBLIC_APP_URL}/callback`} >

Las variables de entorno con el prefijo NEXT_PUBLIC_ se incrustan en el bundle del navegador

y son públicas. Solo el domain y el clientId deben ser públicos. Nunca expongas

AURIS_CLIENT_SECRET con el prefijo NEXT_PUBLIC_. Las variables AURIS_DOMAIN y

AURIS_CLIENT_ID sin prefijo son solo del servidor y nunca se envían al navegador.


Próximos pasos

Ahora que tienes un flujo básico de inicio de sesión funcionando, explora las funciones más relevantes para tu aplicación:

Métodos de autenticación

Autorización

Gestión de usuarios

SDKs y API