A Zero-Trust, containerized IT Service Management (ITSM) portal for Microsoft Entra ID.
The Entra Helpdesk Portal is designed to solve a critical enterprise security challenge: Keeping Tier 1 and Tier 2 support staff out of the Azure/Entra Admin Portals. By leveraging a highly-scoped backend Service Principal and a clean, Material Design web interface, this portal allows helpdesk workers to perform daily identity tasks (password resets, MFA clearing, group management) while limiting their blast radius. Every action is strictly logged to a local database and requires a mandatory ITSM Ticket Number.
ALLOWED_ADMINS environment variable. Even if a user exists in your tenant, they cannot access the portal unless explicitly whitelisted.requiredResourceAccess JSON payload to audit an app's API permissions.docker-compose.yml. Disable User Deletion, Password Resets, or entire modules (like Apps or Groups) to fit your organization's exact delegation model.To run this container, you must create an App Registration in your Entra ID tenant and grant it the following Application Permissions (Admin Consent Required):
User.ReadWrite.All (User management & passwords)Group.ReadWrite.All (Group & member management)Application.ReadWrite.All (App viewing & secret rotation)UserAuthenticationMethod.ReadWrite.All (MFA management)AuditLog.Read.All (Sign-in diagnostics and telemetry)Domain.Read.All (Fetching tenant domains)Note: You must also configure a Web Redirect URI in the App Registration pointing to your deployment URL (e.g., https://helpdesk.yourdomain.com/getAToken).
This portal is packaged as a lightweight, multi-architecture Docker container (compatible with x86_64 and ARM64 devices like Raspberry Pi).
Create a docker-compose.yml file and populate it with your tenant details:
version: '3.8'
services:
helpdesk-portal:
image: jahmed22/entra-helpdesk:latest
container_name: entra_helpdesk
restart: unless-stopped
ports:
- "8000:8000"
environment:
# --- CORE IDENTITY ---
- TENANT_ID=your_tenant_guid
- CLIENT_ID=your_app_registration_guid
- CLIENT_SECRET=your_app_secret_value
- BASE_URL=https://helpdesk.yourdomain.com
# --- SECURITY ---
# Comma-separated list of UPNs allowed to log into the portal
- [email protected],[email protected]
# --- WHITE-LABEL & FEATURE FLAGS ---
- APP_NAME=Contoso IT Helpdesk
- ENABLE_PASSWORD_RESET=true
- ENABLE_MFA_MANAGEMENT=true
- ENABLE_USER_DELETION=false # Prevents UI/API from deleting users
- ENABLE_GROUP_MANAGEMENT=true
- ENABLE_APP_MANAGEMENT=true
volumes:
- helpdesk_data:/app/static/uploads
- helpdesk_db:/app # Persists the SQLite Audit Database
volumes:
helpdesk_data:
helpdesk_db:
Bring up the portal:
docker compose up -d
Content type
Image
Digest
sha256:2d9cc2701…
Size
56.2 MB
Last updated
7 months ago
docker pull jahmed22/entra-helpdesk