Show per-PC credentials across the admin interface
Some checks failed
CI / backend (push) Has been cancelled
CI / naming (push) Has been cancelled
CI / gates (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / lean-build (push) Has been cancelled

- Endpoints (shared key) page: the key is presented as what PCs use until
  they enroll, with enrollment progress, a link to Enrollment, rewritten
  guidance, and rotate/revoke confirmations that say how many PCs are not
  enrolled yet.
- Settings cards describe the server certificate as what PCs actually
  receive, on IIS or Docker; Enrollment has its own icon (the icon set lacked
  the one the Server Certificate card already asked for).
- Server Certificate page checks the certificate the site presents at its
  public address and compares its pin with the certificate file, warning when
  they differ. The host comes from site settings only; the check is a TLS
  handshake, never an HTTP request.
- Fleet list: Credential column and filter (enrolled, pending, re-enroll
  blocked, shared key, not reporting), computed in the list query.
- PC detail: credential state, prefix and dates for fleet readers, state only
  for others, with admin Revoke (optionally blocking re-enrollment) and Allow
  re-enrollment.
- Dashboard: pending enrollment requests, and PCs blocked from re-enrolling
  for more than seven days.
- Runbook: where to find each of these in the app.
This commit is contained in:
cproudlock
2026-09-15 14:09:08 -04:00
parent da4b224ac1
commit c2ffc591bb
17 changed files with 1732 additions and 61 deletions

View File

@@ -21,6 +21,30 @@ root, `<pin>` a server key pin, `<pilotbay>` / `<pilothost>` the pilot PC.
turns it off. An enrolled PC is always refused the shared key
(`401 SHARED_KEY_REFUSED`).
## Where to look in the app
- **Settings -> Endpoints -> Enrollment**: Migration tab (readiness, waves) and
Credentials tab (enrolled PCs, pending requests, un-enroll, allow
re-enrollment, the shared key and auto-enroll switches).
- **Settings -> Endpoints** (the agent key page): the shared key PCs use until
they enroll, with an enrolled-of-total summary and the pending request count.
Regenerate and revoke there say how many PCs are not enrolled and would be
affected.
- **Settings -> Endpoints -> Server Certificate**: the certificate file's pin
and thumbprint, and **What PCs receive**, a live check of the certificate the
site's base URL (`site_base_url`) actually presents. When the two differ, pin
the presented one.
- **Fleet** (sidebar, under Assets): the **Credential** column (Enrolled,
Pending, Re-enroll blocked, Shared key (not enrolled), Not reporting) and a
filter on it.
- **PC detail**: the Endpoint status card shows the PC's credential state (with
prefix, issued, last used, enrolled via and block reason for
`endpoints.fleet` holders). Admins get **Revoke credential** (with **Keep this
PC from enrolling again**) and **Allow re-enrollment** beside the status chip.
- **Dashboard**: "N PCs waiting for enrollment approval" (warning, links to
Enrollment) and "PCs blocked from re-enrolling over 7 days" (info, counted
from when the credential was revoked).
## Before you start
1. Server deployed with the endpoints migration `endpoints0023credentials`