@hemia/auth-sso
Version:
Autenticación SSO centralizada para entornos multiaplicación desarrollados con Node.js
104 lines (75 loc) • 2.68 kB
Markdown
from '@hemia/auth-sso';
const sso = new SSOClient({
clientId: 'sistema1',
redirectUri: 'https://sistema1.com/callback',
ssoAuthUrl: 'https://sso.miempresa.com/authorize',
tokenEndpoint: 'https://sistema1.com/api/sso/token',
sessionEndpoint: 'https://sistema1.com/api/sso/check-session',
refreshEndpoint: 'https://sistema1.com/api/sso/refresh',
logoutEndpoint: 'https://sistema1.com/api/sso/logout',
logoutRedirectUrl: 'https://sistema1.com/',
scopes: ['openid', 'profile'],
apiKey: 'mi-api-key'
});
```
Valida si la sesión actual sigue activa, usando una caché de TTL de 1 minuto para evitar llamadas excesivas.
```ts
const session = await sso.validateSession();
if (!session.isAuthenticated) {
sso.startLogin();
}
```
Redirige al usuario al flujo de autenticación del SSO usando PKCE.
```ts
sso.startLogin(); // auto y skip son opcionales
```
Procesa el callback del servidor SSO después de la redirección e intercambia el código de autorización por un token de sesión.
```ts
const result = await sso.handleCallback();
if (!result.success) {
console.error(result.message);
}
```
Renueva la sesión actual usando el token de sesión. Ideal para mantener sesiones activas sin necesidad de login constante.
```ts
const ok = await sso.refreshToken();
```
Cierra la sesión actual tanto en el cliente como en el backend del sistema, y redirige al usuario.
```ts
await sso.logout();
```
* Backend del sistema debe implementar los endpoints para: token, sesión, refresh y logout.
* El flujo de autenticación usa PKCE (`code_challenge` y `code_verifier`).
* El cliente guarda datos temporales en `localStorage`.
## Estructura esperada del objeto `SSOConfig`
```ts
interface SSOConfig {
clientId: string;
redirectUri: string;
ssoAuthUrl: string;
tokenEndpoint: string;
sessionEndpoint: string;
refreshEndpoint?: string;
logoutEndpoint?: string;
logoutRedirectUrl?: string;
scopes: string[];
apiKey?: string;
}
```
MIT
Cliente de autenticación Single Sign-On (SSO) para entornos web multiaplicación. Este paquete permite validar sesiones, iniciar login usando PKCE, manejar el callback de autenticación, refrescar sesiones y cerrar sesión de forma centralizada.
```bash
npm install @hemia/auth-sso
```
```ts
import { SSOClient }