🔐 Autenticação - ecosif-angular
📋 Visão Geral
O ecosif-angular suporta dois métodos de autenticação:
- Login Local - Usuário/senha com JWT
- Azure AD - Autenticação via Microsoft Azure AD (MSAL)
🔑 Login Local
Fluxo
1. Usuário preenche credenciais
2. Frontend envia POST /api/auth/signin
3. Backend valida e retorna JWT token
4. Frontend armazena token
5. Interceptor adiciona token em requisições
Código
// Login
this.authService.login(username, password).subscribe(
response => {
// Token salvo automaticamente
this.router.navigate(['/dashboard']);
},
error => {
// Tratar erro
}
);
☁️ Azure AD (MSAL)
Configuração
// helpers/msal-config.ts
export const MSALInstanceFactory = (): IPublicClientApplication => {
return new PublicClientApplication({
auth: {
clientId: 'seu-client-id',
authority: 'https://login.microsoftonline.com/seu-tenant-id'
}
});
};
Login
// Login via Azure AD
this.msalService.loginPopup().subscribe(
response => {
// Usuário autenticado
this.router.navigate(['/dashboard']);
}
);
🔒 Proteção de Rotas
AuthGuard
// guard/auth.guard.ts
canActivate(): boolean {
if (this.authService.isAuthenticated()) {
return true;
}
this.router.navigate(['/login']);
return false;
}
Aplicar Guard
// app-routing.module.ts
{
path: 'dashboard',
component: DashboardComponent,
canActivate: [AuthGuard]
}
🎫 Token JWT
Armazenamento
O token é armazenado em localStorage ou sessionStorage.
Interceptor
O AuthInterceptor adiciona automaticamente o token nas requisições:
// interceptor/auth.interceptor.ts
intercept(req: HttpRequest<any>, next: HttpHandler) {
const token = this.tokenService.getToken();
if (token) {
req = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
}
return next.handle(req);
}
🔄 Renovação de Token
O sistema renova automaticamente tokens expirados quando possível.
Última Atualização: 2025-12-01