# Estándares - Autenticación SSO Active Directory & JWT

Este documento detalla el flujo de identidad corporativa entre Angular, NestJS y Active Directory (Azure AD / Entra ID).

---

## 1. Diagrama de Secuencia SSO
```
[ Angular (Cliente) ] ----(1) Iniciar Sesión ----> [ Azure AD SSO Portal ]
[ Angular (Cliente) ] <---(2) Retorna JWT Token --- [ Azure AD SSO Portal ]
[ Angular (Cliente) ] ----(3) GET /api/tickets ----> [ NestJS (Backend) ]
                             (Authorization Header)
[ NestJS (Backend)  ] ----(4) Valida Firma JWT ---> [ Azure AD Keys (JWKS) ]
[ NestJS (Backend)  ] <---(5) Token Válido --------- [ Azure AD Keys (JWKS) ]
[ Angular (Cliente) ] <---(6) Respuesta JSON ------- [ NestJS (Backend) ]
```

---

## 2. Contrato de Cabeceras
Toda solicitud HTTP realizada por el frontend hacia los endpoints protegidos del backend debe incluir la cabecera `Authorization`:

```http
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IiJ9...
```

---

## 3. Configuración en NestJS (Passport)
El backend utiliza `passport-jwt` o `passport-azure-ad` para descifrar y validar el token.

### Claims esperados en el JWT decodificado:
- `sub` (Identificador único de usuario)
- `email` (Correo electrónico corporativo, ej: `jess@App.com`)
- `name` (Nombre del empleado)
- `roles` (Roles asignados, ej: `['Employee', 'Manager']`)
- `department` (Departamento de la organización)

---

## 4. Frontend Angular AuthGuard
El interceptor HTTP de Angular inyecta automáticamente el token JWT obtenido desde el store de autenticación en todas las llamadas salientes hacia el backend.
