secure workflow

ECS Account Request App

A web app that replaced a paper-style account-request process for an IT team. A request moves from the requester to their manager, then to an approver, and finally to IT for account creation, with email notifications at each step. I recently did a full security review of it and closed every gap I found.

# What it does

  • Collects account requests through a web form.
  • Routes each request through manager approval, then final approval.
  • Emails each person when it is their turn, using the Microsoft Graph API.
  • Produces an account-creation package (PDF summary plus a PowerShell script) for IT once a request is fully approved.
  • Gives admins a portal to review, manage, and audit requests.

# Tech

  • Node.js
  • Express
  • EJS templates
  • Microsoft Graph (mail)
  • Microsoft Entra ID (OIDC sign-in, ready to enable)

# Security work

  • Approve/deny links require a per-request access code, so guessing a request ID is not enough.
  • PDF downloads and account-creation actions are limited to admins and the assigned approver.
  • CSRF protection and blocking of cross-site requests.
  • Rate limits on login and other sensitive actions.
  • Audit log of approvals, denials, and admin actions; denied requests are kept, not deleted.
  • Request data encrypted at rest, with tightly restricted file permissions.
  • Secure, HTTP-only session cookies.
  • Microsoft Entra sign-in built so approvers must prove who they are (switched on once the tenant side is configured).
  • Server: TLS 1.2+ only, key-only SSH, fail2ban, patched dependencies, unused libraries and test scripts removed.

# Screenshots

[TBD: add screenshots to /projects/ecs-forms/ (scrub hostnames, IPs and personal data first)]

# Links

  • Source and live site are private (internal app). [TBD: decide whether to share screenshots with sample data]

← all projects