unauthorized
Docs version v1 (main)Nauthera is pre-1.0, in a design-partner program
The caller is not signed in, or the sign-in or admin token no longer counts (401).
Meaning
- Hosted sign-in UI: the request carries no sign-in session, or the pending sign-in
between password and second factor has lapsed (
auth.pending.ttl), as on the consent, device verification and MFA endpoints ("sign in to continue"). - The MFA endpoints also answer it when the factor or recovery codes they act on do not exist, so factor state is never revealed.
- Admin API: the token was absent or did not verify, or a DPoP-bound token failed
its sender constraint.
WWW-Authenticatesays which; a challenge naminguse_dpop_noncemeans retry with the nonce sent inDPoP-Nonce.
Impact
A user whose sign-in step took too long sees "Your sign-in session expired" and signs in again; this is expected now and then. A dashboard user is sent to sign in again. An admin-API client getting it on every call has a broken token setup.
Diagnosis
- Read the
WWW-Authenticateheader on an admin-API answer. - Look the request id up on the Troubleshooting page. Hosted UI refusals name a
cause such as
pending_expired,pending_absent,session_absentorsession_expired. An admin token refusal is recorded asadmin.access.deniedwith reasonunauthenticatedand a cause such ascredential_missing,token_expiredor adpop_*cause. - For lapsed pending sign-ins across many users, check
auth.pending.ttland the cache (cache.*), which holds pending sign-ins.
Mitigation
- As a user: choose "Sign in again" and complete each step without long pauses.
- As an admin-API caller: get a new token; for a DPoP-bound token send
Authorization:and a fresh proof on every call, and on aDPoP <token> use_dpop_noncechallenge repeat the call once with the nonce fromDPoP-Nonce. - As an operator: if pending sign-ins lapse for everyone, check that every replica reaches the same cache.
Escalation
Escalate when a freshly issued admin token is refused, or pending sign-ins lapse well
inside auth.pending.ttl. Open an issue with the request id, the audit cause, the
WWW-Authenticate value and the server version. Never attach tokens or proofs.
Problem code runbooks · Generated from internal/ in nauthera-server.