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.
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
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
- .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
- 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
- Node.js 18+ e npm
- .NET 8 SDK
- Azure Subscription com Azure AD/Entra ID
- PowerShell (para scripts de configuração)
- Acesse o Azure Portal
- Navegue para Azure Active Directory > App registrations
- Clique em New registration
- Configure:
- Name:
EntraId Management Solution - Account types:
Single tenant - Redirect URI:
- SPA:
http://localhost:4200/auth/callback - Web:
https://localhost:7001/signin-oidc
- SPA:
- Name:
-
Em API permissions, adicione:
- Microsoft Graph (Delegated):
User.ReadDirectory.Read.AllGroup.Read.All
- Microsoft Graph (Application):
Directory.Read.AllGroup.Read.AllAuditLog.Read.All
- Microsoft Graph (Delegated):
-
Grant admin consent para todas as permissões
- Anote:
- Application (client) ID
- Directory (tenant) ID
- Em Certificates & secrets, crie um Client secret
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/EntraIdWebApiA API estará disponível em:
- HTTPS: https://localhost:7001
- Swagger: https://localhost:7001/swagger
cd entra-id-angular-app
# Instalar dependências
npm install
# Configurar environment
# Editar src/environments/environment.ts com suas credenciais
# Executar o dashboard
npm startO dashboard estará disponível em:
- Acesse http://localhost:4200
- Clique em "Entrar com Microsoft"
- Faça login com sua conta Azure AD
- Explore o dashboard com informações do tenant
- Métricas em tempo real do tenant
- Informações do usuário atual
- Contadores de usuários e grupos
- Tentativas de login recentes
- Lista completa de usuários do tenant
- Detalhes como cargo, departamento, último login
- Avatars com iniciais personalizadas
- Visualização de grupos com contagem de membros
- Descrições e datas de criação
- Paginação para grandes volumes
- Tentativas de login com status de sucesso/falha
- Informações de localização e IP
- Aplicativos utilizados para login
- Azure Entra ID como provedor principal
- Multi-Factor Authentication suportado
- Tokens JWT validados pelo backend
- Refresh automático de tokens
- Claims-based authorization no backend
- Route guards no frontend
- Interceptors para injeção automática de tokens
- Logout seguro com limpeza de sessão
A maneira recomendada para executar esta solução é usando Docker e Docker Compose, que orquestra ambos os serviços de backend e frontend.
- Docker e Docker Compose instalados na sua máquina.
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 .env2. 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 (geralmenteapi://<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ávelAZURE_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}emAZURE_FRONTEND_CLIENT_IDpelo 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 --buildEste comando irá construir as imagens para o backend e frontend, iniciar os contêineres e conectá-los.
4. Acesse a Aplicação
- Frontend: http://localhost:4200
- Backend (Swagger): http://localhost:7001/swagger
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.
cd EntraIdWebApi
dotnet test src/EntraIdWebApi.Tests/cd entra-id-angular-app
npm test- Backend: Deploy da API para Azure App Service
- Frontend: Deploy para Azure Static Web Apps
- Configurar variáveis de ambiente no Azure
- Atualizar redirect URIs no Azure AD
- IIS para o backend .NET
- Nginx/Apache para o frontend Angular
- HTTPS obrigatório para produção
- Variáveis de ambiente configuradas
- Serilog no backend com múltiplos sinks
- Console logging no frontend para desenvolvimento
- Structured logging com níveis configuráveis
- Lazy loading de rotas no Angular
- Caching de tokens MSAL
- Compressão GZIP no backend
- Tree shaking automático no build
- Application Insights (opcional)
- Health checks na API
- Error tracking centralizado
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'Add nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Erro de CORS
// API Program.cs
app.UseCors(policy => policy
.WithOrigins("http://localhost:4200")
.AllowAnyMethod()
.AllowAnyHeader());Token inválido
- Verificar
clientIdetenantIdno 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
- Documentação Azure AD
- MSAL Angular Guide
- Microsoft Graph API
- Angular Documentation
- PrimeNG Components
Desenvolvido usando .NET 8, Angular 17+ e Azure Entra ID


