Estado
Estado del registro: UNPUBLISHED. Instala este SDK únicamente desde el checkout del código fuente del repositorio; no uses un registro de paquetes externo.
El estado del paquete es Paquete actual. El módulo Nuxt, el middleware de servidor H3/Nitro y los composables importados automáticamente están implementados. Una prueba de ida y vuelta real contra un IdP en infraestructura de producción está pendiente de verificación manual.
Configuración del módulo
Añade @xid-kit/nuxt al array modules. El módulo importa automáticamente todos los composables de @xid-kit/vue y registra un plugin solo de cliente que instala XidPlugin.
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@xid-kit/nuxt'],
xid: {
browser: {
mode: 'oidc',
issuer: 'https://xid.dev',
clientId: 'client_abc123',
redirectUri: 'https://app.example.com/auth/callback',
},
},
})Composables (importados automáticamente)
<script setup lang="ts">
// No import needed -- Nuxt auto-imports from @xid-kit/vue
const auth = useAuth()
const userRef = useUser()
const orgRef = useOrganization()
const sessionRef = useSession()
</script>
<template>
<div v-if="auth.isSignedIn">
Signed in as {{ auth.userId }}
<button @click="auth.signOut()">Sign out</button>
</div>
</template>Middleware de servidor (autenticación JWT)
createXidServerMiddleware devuelve un manejador H3 que verifica un JWT Bearer o explícito de la aplicación y escribe event.context.xidAuth. Configura las sesiones Core del mismo origen mediante sessionTokenExchange; las URL relativas de H3 v1 también requieren un requestOrigin de confianza. Coloca el archivo en server/middleware/ para que Nitro lo registre globalmente.
// server/middleware/xid.ts
import { createXidServerMiddleware } from '@xid-kit/nuxt'
export default createXidServerMiddleware({
jwtKey: JSON.parse(process.env.XID_JWKS_PUBLIC_KEY!),
issuer: 'https://acme.xid.dev',
sessionTokenExchange: { endpoint: '/v1/sessions/token' },
requestOrigin: process.env.XID_APP_ORIGIN!,
protectedRoutes: ['/api/admin'],
})Lectura de autenticación en rutas del servidor
// server/routes/api/me.get.ts
import { getXidAuth } from '@xid-kit/nuxt'
export default defineEventHandler((event) => {
const auth = getXidAuth(event)
if (!auth.userId) {
throw createError({ statusCode: 401, message: 'Unauthorized' })
}
return { userId: auth.userId, orgId: auth.orgId }
})API exportada
| Exportar | Tipo | Propósito |
|---|---|---|
createXidServerMiddleware |
function | Fábrica de manejadores de eventos H3: verifica el JWT, escribe event.context.xidAuth y protege rutas |
getXidAuth |
function | Lee AuthResult de event.context.xidAuth en rutas y manejadores del servidor |
XID_AUTH_CONTEXT_KEY |
constante de cadena | Clave de contexto usada para almacenar el resultado de autenticación (‘xidAuth’) |
XidServerMiddlewareOptions |
type | jwtKey, issuer, authorizedParties, jwtCookieName, sessionTokenExchange, requestOrigin, protectedRoutes, onUnauthenticated |
Notas de seguridad
event.context.xidAuthes exclusivo del servidor y nunca se envía al navegador.- El middleware elimina cualquier token de autenticación proporcionado por el cliente y solo reinyecta el resultado verificado.
- Coloca el archivo de middleware en
server/middleware/para garantizar que cubra todas las rutas como middleware global de Nitro.