Technology
The Authenticator handles passwordless authentication. Underneath sits the rest of the platform: applications, a SCIM-ready directory, roles, scopes, machine credentials, and audit.
Patent-pending face tokenization
face code verifier · face-encryptedface code challenge · SHA-256 · to the serverSHA-256(face code verifier)=face code challenge Verified: no biometric stored or sent If you know PKCE, you already know face tokens
Prove the client finishing the flow is the one that started it: publish the hash of a secret up front, reveal the secret later.
Prove the person: the secret is sealed under your face, and only your live face can reveal it.
Not a biometric template: nothing to link or reverse, and only the live face unlocks it. A quantum-safe face token (symmetric-and-hash cryptography only), carried over hybrid post-quantum TLS (X25519MLKEM768).
ISO/IEC 24745 names the four properties protected biometric data must have. Face tokens have them by construction: properties of the mathematics, not promises in a policy.
Every enrollment is fresh randomness: two tokens from one face share nothing and can't be linked. AEAD binds each token to its tenant, so it can't be reused anywhere else.
Knowing a token tells you nothing about the face behind it. What it holds is a sealed random verifier, and the sealing is designed so there is no way back to an image or a template.
A face can't be canceled; a token can. Delete it and it can never verify again, so a compromise ends at revocation instead of following someone for life.
Re-enroll from the same face at any time: a new random verifier, a new challenge, no relationship to the old token. Renewal never spends the biometric, and never reveals it.
The vocabulary is the standards' own: ISO/IEC 24745:2022 specifies these protection properties for biometric information, and ISO/IEC 30136:2018 defines how they are tested and reported.
What's inside
Register OIDC clients and SAML service providers side by side. Per-app credentials, redirect URIs, branding, and token settings.
How it works, in the docsA managed user directory with custom attributes. Your upstream directory stays the source of truth; SCIM 2.0 pushes users and groups in.
How it works, in the docsDefine roles and permissions once, then assign them across applications and APIs for fine-grained, capability-based access.
How it works, in the docsShape exactly what each app receives. Map directory attributes into scopes and claims for least-privilege tokens.
How it works, in the docsProtect resource servers with scoped tokens and issue machine-to-machine credentials for service-to-service calls.
How it works, in the docsEvery sign-in, grant, and admin action on a read-only audit trail. Live activity, with CSV export.
How it works, in the docsThe console
Register apps, manage users and roles, and revoke credentials the moment someone leaves. Isolated tenants, per-app branding, delegated admin. Every change is audited, and every sign-in is visible live.

How it works
SenseCrypt is standard OIDC and SAML at the wire, so it drops into the login flow you already have.
Create an OIDC client or SAML service provider, register your redirect URI, and copy the client credentials. Endpoints resolve from the OIDC discovery document.
Send users to /authorize. They scan a QR with the SenseCrypt app and verify live; liveness and matching run on their own phone.
We return an ID token (or SAML assertion) signed with your tenant's keys. Verify it like any other provider, no SDK required.
Every card links to its primary spec, so your review can start from the source.
OpenID Connect is the identity layer on OAuth 2.0: ID Tokens and UserInfo, issued per tenant with its own signing keys.
Every tenant publishes /.well-known/openid-configuration, so endpoints, scopes, and keys resolve from one URL.
The delegated-authorization framework underneath every integration: authorization code, refresh, and client-credentials grants.
Front-channel code, back-channel exchange: the recommended interactive flow, and the only grant used for user sign-in.
Proof Key for Code Exchange defeats authorization-code interception. It is required on every authorization flow, not optional.
Pushed Authorization Requests: OAuth parameters travel the back channel as a request_uri, never the browser.
Standard Authorization: Bearer token presentation that works with any compliant API gateway or middleware.
PKCE for all clients, exact redirect-URI matching, no implicit or password grants: OAuth 2.1's requirements, enforced today.
The IETF's current security best practice for OAuth deployments, and the hardening baseline the endpoints follow.
Your server starts sign-in with a user hint, the user approves on their phone, and your server collects the tokens. No browser, no redirect.
Signed assertions, SP- and IdP-initiated SSO, and attribute mapping. Any SP connects from pasted metadata.
Standard user and group provisioning: create, update, deprovision. Built to match the request shapes real Okta and Entra connectors send.
Inside the token
Each card below is checkable. Decode one token and the evidence is in the claims your app already validates.
Every ID and access token is an ES256 JWT signed with the tenant's own keys. Your app verifies the signature against the tenant's published JWKS, selecting the key by kid.
The amr claim reads face, mfa, and pop: a fresh on-device face match, multi-factor, and a device-bound key proof of possession. The token records how the user signed in.
Send the OIDC max_age parameter to require a fresh face ceremony for a sensitive action. The check runs at the token exchange, and auth_time records when the ceremony happened.
Access is re-evaluated on every refresh, so a suspended or removed user fails closed before the access token expires. Reuse of a spent refresh token revokes its whole family.
Adoption
If your team has integrated Auth0, Okta, or Entra ID, SenseCrypt will feel familiar: applications, scopes, RBAC, and SCIM provisioning behave the way you expect, and any standard OIDC or SAML library works unmodified. Quickstarts for Next.js, React, Express, and FastAPI cover the first integration end to end.
Read the docsRun on our hosted platform, or deploy the same identity provider inside your own infrastructure: a standard Python service behind your TLS proxy, backed by PostgreSQL, serving OIDC, SAML, SCIM, and the admin console from a single process.
Self-hosting guidePoint a standard OIDC library at your tenant's discovery URL and validate the token. The quickstarts show every step.