Skip to main content

Authentication

Login method​

Percus uses federated single sign-on as the only way to authenticate, managed through NextAuth.js 5. There are no username/password credentials — all authentication is delegated to the identity provider.

Two providers are supported:

  • Google OAuth 2.0 — available on all deployments.
  • Microsoft Entra ID — multi-tenant, accepting any Microsoft work or school account. Enabled per deployment when configured.

Every sign-in requires an identity token that the Identity API verifies server-side; a token that fails verification is rejected regardless of provider.

This means:

  • Percus never stores or handles passwords.
  • Password breach exposure does not apply to Percus accounts.
  • Multi-factor authentication is controlled at the identity provider (Google or Microsoft account level).

Session management​

After a successful sign-in, NextAuth.js issues a JWT session token stored in an HTTP-only, secure cookie. The token carries:

ClaimDescription
subUser ID (Percus internal UUID)
emailUser's email, as asserted by the identity provider
org_rolesMap of organizationId → role for all orgs the user belongs to
system_role"Owner" for Percus platform admins; absent for all other users

The session token is validated on every request. Role changes take effect on the next request after the session is refreshed.

Invitation-based onboarding​

Users cannot self-register. Access to an organization is granted only through an explicit invitation issued by an OrganizationAdmin. The invited user authenticates with a supported identity provider and is associated with the role assigned at invitation time.

What Percus does not handle​

ConcernWho handles it
Password strength and rotationThe identity provider (not applicable to Percus — no passwords)
MFA enforcementGoogle Workspace admin or individual Google account settings
SSO policy (e.g. force company Google account)Client's Google Workspace admin
Session duration policyNextAuth.js configuration (platform-controlled)