← All posts
Architecture

How Celestial Auth Is Designed

The IDP/PDP split, the Auth Switch, and an async provisioning problem I have not fully solved.

May 7, 2026 · 6 min read
Celestial Auth Architecture Overview

The IDP/PDP split

The **Identity Provider (IDP)** answers: who is this? It handles credentials and token issuance. The **Policy Decision Point (PDP)** answers: is this user allowed to do this thing, in this tenant, right now? Why split them? Because they change at different rates. Credential logic changes with new auth methods (passkeys, magic links), while policy logic changes with product permissions. Mixing them means every credential change risks breaking authorization.
IDP vs PDP diagram
The logical separation of identity and policy.

The Auth Switch and async provisioning

The **Auth Switch** is a routing layer that decides which flow a login attempt should use. This is where an unsolved problem lives: **async provisioning**. When a user authenticates via SAML for the first time, they are verified but no record exists in Celestial's user store. Right now, Celestial uses an event-driven approach with a short polling loop. It works, but it creates a visible pause for the user.
Sequence diagram of async provisioning
The polling lifecycle for JIT provisioning.

Frequently Asked Questions