Skip to content

talleswp/ProjetoEntraId

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 EntraId Management Solution

Uma solução completa para gerenciamento e monitoramento do Azure Active Directory (Entra ID), composta por uma API .NET 8 e um dashboard Angular 17+ moderno.

📋 Visão Geral

Este projeto oferece uma interface intuitiva para:

  • ✅ Autenticação com Azure Entra ID (Azure AD)
  • ✅ Visualização de informações de usuários e organizações
  • ✅ Monitoramento de tentativas de login
  • ✅ Gerenciamento de grupos e permissões
  • ✅ Dashboard com métricas em tempo real
  • ✅ Interface moderna e responsiva

🏗️ Arquitetura

EntraId Management Solution/
├── EntraIdWebApi/              # Backend - API .NET 8
│   ├── src/
│   │   ├── EntraIdWebApi/      # Projeto principal da API
│   │   └── EntraIdWebApi.Tests/ # Testes unitários
│   ├── Dockerfile              # Container da API
│   └── README.md
│
├── entra-id-angular-app/       # Frontend - Angular 17+
│   ├── src/
│   │   ├── app/                # Aplicação Angular
│   │   └── environments/       # Configurações de ambiente
│   ├── Dockerfile              # Container do frontend
│   └── README.md
│
└── README.md                   # Este arquivo

🔧 Tecnologias Utilizadas

Backend (EntraIdWebApi)

  • .NET 8 - Framework principal
  • Microsoft.Identity.Web - Autenticação Azure AD
  • Microsoft.Graph - Integração com Microsoft Graph API
  • Azure.Identity - Autenticação de aplicação
  • Serilog - Logging estruturado
  • Swagger - Documentação da API
  • xUnit + Moq - Testes unitários

Frontend (entra-id-angular-app)

  • Angular 17+ - Framework com standalone components
  • PrimeNG 17+ - Biblioteca de componentes UI
  • MSAL Angular - Autenticação Microsoft
  • TypeScript 5.4+ - Linguagem principal
  • RxJS Signals - Gerenciamento de estado reativo
  • SCSS - Pré-processador CSS

🚀 Início Rápido

Pré-requisitos

  • Node.js 18+ e npm
  • .NET 8 SDK
  • Azure Subscription com Azure AD/Entra ID
  • PowerShell (para scripts de configuração)

1. Configuração do Azure AD

Criar App Registration

  1. Acesse o Azure Portal
  2. Navegue para Azure Active Directory > App registrations
  3. Clique em New registration
  4. Configure:
    • Name: EntraId Management Solution
    • Account types: Single tenant
    • Redirect URI:
      • SPA: http://localhost:4200/auth/callback
      • Web: https://localhost:7001/signin-oidc

Configurar Permissões

  1. Em API permissions, adicione:

    • Microsoft Graph (Delegated):
      • User.Read
      • Directory.Read.All
      • Group.Read.All
    • Microsoft Graph (Application):
      • Directory.Read.All
      • Group.Read.All
      • AuditLog.Read.All
  2. Grant admin consent para todas as permissões

Obter Credenciais

  1. Anote:
    • Application (client) ID
    • Directory (tenant) ID
  2. Em Certificates & secrets, crie um Client secret

2. Configuração e Execução

Backend (API .NET 8)

cd EntraIdWebApi

# Configurar appsettings.json
cp src/EntraIdWebApi/appsettings.template.json src/EntraIdWebApi/appsettings.json
# Editar com suas credenciais Azure

# Restaurar dependências
dotnet restore

# Executar a API
dotnet run --project src/EntraIdWebApi

A API estará disponível em:

Frontend (Angular Dashboard)

cd entra-id-angular-app

# Instalar dependências
npm install

# Configurar environment
# Editar src/environments/environment.ts com suas credenciais

# Executar o dashboard
npm start

O dashboard estará disponível em:

3. Acesso à Aplicação

  1. Acesse http://localhost:4200
  2. Clique em "Entrar com Microsoft"
  3. Faça login com sua conta Azure AD
  4. Explore o dashboard com informações do tenant

📊 Funcionalidades

Dashboard Principal

  • Métricas em tempo real do tenant
  • Informações do usuário atual
  • Contadores de usuários e grupos
  • Tentativas de login recentes

Gestão de Usuários

  • Lista completa de usuários do tenant
  • Detalhes como cargo, departamento, último login
  • Avatars com iniciais personalizadas

Gestão de Grupos

  • Visualização de grupos com contagem de membros
  • Descrições e datas de criação
  • Paginação para grandes volumes

Auditoria e Segurança

  • Tentativas de login com status de sucesso/falha
  • Informações de localização e IP
  • Aplicativos utilizados para login

🔐 Segurança

Autenticação

  • Azure Entra ID como provedor principal
  • Multi-Factor Authentication suportado
  • Tokens JWT validados pelo backend
  • Refresh automático de tokens

Autorização

  • Claims-based authorization no backend
  • Route guards no frontend
  • Interceptors para injeção automática de tokens
  • Logout seguro com limpeza de sessão

🐳 Executando com Docker

A maneira recomendada para executar esta solução é usando Docker e Docker Compose, que orquestra ambos os serviços de backend e frontend.

Pré-requisitos

  • Docker e Docker Compose instalados na sua máquina.

Passos para Execução

1. Crie seu Arquivo de Ambiente

O projeto utiliza um arquivo .env para gerenciar todas as suas credenciais do Azure de forma segura. Primeiro, copie o arquivo de exemplo:

cp .env.example .env

2. Configure as Variáveis

Abra o novo arquivo .env com um editor de texto e preencha as variáveis com os dados do seu "Registro de Aplicativo" (App Registration) no Azure.

  • AZURE_TENANT_ID: O ID do seu Tenant (Directory (tenant) ID).
  • AZURE_CLIENT_ID: O ID da sua Aplicação (Application (client) ID).
  • AZURE_CLIENT_SECRET: O segredo do cliente criado para a aplicação.
  • AZURE_AUDIENCE: A "Application ID URI" da sua API (geralmente api://<AZURE_CLIENT_ID>).

Cenários de Client ID:

  • ID Único: Use os dados de um único App Registration (o do backend) para todas as variáveis AZURE_*. Deixe a variável AZURE_FRONTEND_CLIENT_ID=${AZURE_CLIENT_ID} como está.
  • IDs Separados: Se você usa App Registrations distintos para o frontend e backend, substitua ${AZURE_CLIENT_ID} em AZURE_FRONTEND_CLIENT_ID pelo ID real do seu App Registration de frontend. Importante: Para este cenário funcionar, você deve conceder permissão da API do seu backend para o seu App de frontend no portal do Azure.

3. Execute o Docker Compose

Com o arquivo .env configurado, execute o seguinte comando a partir da raiz do projeto:

docker-compose up --build

Este comando irá construir as imagens para o backend e frontend, iniciar os contêineres e conectá-los.

4. Acesse a Aplicação

Para parar a aplicação, pressione Ctrl + C no terminal onde o compose está rodando, e depois execute docker-compose down para remover os contêineres.

🧪 Testes

Backend

cd EntraIdWebApi
dotnet test src/EntraIdWebApi.Tests/

Frontend

cd entra-id-angular-app
npm test

📈 Deploy

Azure App Service

  1. Backend: Deploy da API para Azure App Service
  2. Frontend: Deploy para Azure Static Web Apps
  3. Configurar variáveis de ambiente no Azure
  4. Atualizar redirect URIs no Azure AD

On-Premises

  1. IIS para o backend .NET
  2. Nginx/Apache para o frontend Angular
  3. HTTPS obrigatório para produção
  4. Variáveis de ambiente configuradas

🔧 Configuração Avançada

Logging

  • Serilog no backend com múltiplos sinks
  • Console logging no frontend para desenvolvimento
  • Structured logging com níveis configuráveis

Performance

  • Lazy loading de rotas no Angular
  • Caching de tokens MSAL
  • Compressão GZIP no backend
  • Tree shaking automático no build

Monitoramento

  • Application Insights (opcional)
  • Health checks na API
  • Error tracking centralizado

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -m 'Add nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🆘 Suporte

Problemas Comuns

Erro de CORS

// API Program.cs
app.UseCors(policy => policy
    .WithOrigins("http://localhost:4200")
    .AllowAnyMethod()
    .AllowAnyHeader());

Token inválido

  • Verificar clientId e tenantId no environment
  • Confirmar redirect URI no Azure Portal
  • Verificar permissões concedidas

Falha na autenticação

  • Verificar se o usuário tem acesso ao tenant
  • Confirmar que o MFA está configurado
  • Testar com usuário administrador

Links Úteis


Desenvolvido usando .NET 8, Angular 17+ e Azure Entra ID

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published