zas-auth-sso
v0.1.3
Published
Paquete reutilizable para autenticación SSO ZAS (popup login, refresh tokens, guard, slice Redux, server actions).
Maintainers
Readme
zas-auth-sso
Paquete reusable para la Autenticación SSO entre las aplicaciones del ecosistema ZAS.
Incluye:
- Componente
SSOLogin - Hooks
useSSOAuth,useAuth,useRefreshSession AuthGuardySessionExpiredAlert- Slice Redux
authReducer+ actions - Server utilities:
storeSession,clearSession,getSession,authenticateWithTokens,refreshTokens - Config central
initSSOConfig
Instalación (cuando se publique)
npm install zas-auth-ssoConfiguración Básica
// sso-config.ts
import { initSSOConfig } from "zas-auth-sso";
initSSOConfig({
ssoUrl: process.env.NEXT_PUBLIC_SSO_URL!,
appUrl: process.env.NEXT_PUBLIC_APP_URL, // fallback window.location.origin
api: {
me: process.env.NEXT_PUBLIC_API_URL + "users/me",
refresh: process.env.NEXT_PUBLIC_API_URL + "auth/refresh",
},
redirectPath: "/dashboard",
sessionEndpoint: "/api/session",
cookieName: "sso_session", // opcional (default)
encryptionSecret: process.env.ENCRYPTION_SECRET, // sólo server
debug: process.env.NODE_ENV !== "production",
});Store Redux:
import { configureStore } from "@reduxjs/toolkit";
import { authReducer } from "zas-auth-sso";
export const store = configureStore({ reducer: { authSlice: authReducer } });
export type RootState = ReturnType<typeof store.getState>;Endpoint sesión (app/api/session/route.ts):
import { NextResponse } from "next/server";
import { getSession, clearSession } from "zas-auth-sso";
export async function GET() {
const session = await getSession();
if (session.shouldClear)
return NextResponse.json({ user: null, tokens: null }, { status: 401 });
return NextResponse.json(session);
}
export async function DELETE() {
await clearSession();
return NextResponse.json({ ok: true });
}Página login:
import { SSOLogin, resolveClientId, clientsConfig } from "zas-auth-sso";
export default function Page() {
const id = resolveClientId(clientsConfig);
return <SSOLogin clientId={id} variant="tailwind" />;
}Protección rutas:
import { AuthGuard } from "zas-auth-sso";
export default function Layout({ children }: { children: React.ReactNode }) {
return <AuthGuard>{children}</AuthGuard>;
}Exportaciones Principales
import {
initSSOConfig,
getSSOConfig,
SSOLogin,
AuthGuard,
SessionExpiredAlert,
useSSOAuth,
useAuth,
useRefreshSession,
authReducer,
storeSession,
clearSession,
getSession,
authenticateWithTokens,
refreshTokens,
resolveClientId,
clientsConfig,
} from "zas-auth-sso";Notas
- Cifrado opcional AES-256-GCM (si no se pasa
encryptionSecretse guarda plano – sólo recomendado en desarrollo). - Evitamos referencias a paths específicos del monorepo original.
- Puedes sobreescribir
clientsConfigexportando tu propia lista. - Prop
variantenSSOLoginpermite estilostailwindlistos oinline(por defecto) con estilos inline mínimos. cookieNameconfigurable para separar sesiones entre múltiples apps en el mismo dominio.
Build local
cd auth-sso
npm install
npm run buildLicencia
MIT
