This watches the client secrets and certificates of your Entra ID app registrations and reports how many days each one has left, as PRTG XML, JSON and a small web page. One container, read-only, every tenant you look after.
A secret quietly reaches its last day and the thing it powered stops: directory sync, a backup job, a signing flow. The error you get points at the symptom, never at the credential.
is the longest life Entra grants a client secret. Certificates last longer, which only means the surprise arrives later.
Microsoft sends a digest to the app owner. Owners leave, shared mailboxes get filtered, and nobody notices the gap.
The portal shows one directory at a time. Looking after twelve customers means twelve logins and no shared view.
Point an HTTP Data Advanced sensor at the endpoint and you get one channel per application plus three summary channels, with the warning and error limits already set. No script, no scheduled task, no return-code parsing.
<!-- /prtg?tenant=contoso --> <prtg> <result> <channel>Minimale Restlaufzeit</channel> <value>4</value> <customunit>Tage</customunit> <limitminwarning>30</limitminwarning> <limitminerror>14</limitminerror> </result> <!-- one channel per application --> </prtg>
Thresholds are per request, so one tenant can feed several sensors: the self-renewing Entra Connect certificate on a short threshold of its own, everything else on the normal one.
Both ship from the same repository and share the same Graph code. Pick by how many directories you look after and who needs to add one.
Stateless. Tenants come from environment variables or a small JSON file. Standard library only, so there is no dependency tree to keep patching.
docker compose up -d
Adds what a managed service provider needs: accounts with mandatory two-factor, encrypted credential storage and one scan per customer per day spread over 24 hours.
docker compose -f docker-compose.portal.yml up -d
Application.Read.All, application-only, with admin consent. Metadata only.
Graph does not return secret values at all. Only names, dates and thumbprints leave the tenant.
No write permission is requested, so it cannot change anything in your directory even by mistake.
Runs as UID 10001, read-only root filesystem, no new privileges.
Certificate authentication is preferred, since Entra caps secrets at 24 months.
328 tests covering aggregation, both renderers, the request path and the authentication flows.
One app registration, one container, and you know. MIT licensed, no account, nothing phones home.