Keycloak, Auth0, Entra, Ping or ClavionX? Choosing by Architecture, Not Feature List

Feature matrices converge; architectures don't. Four questions that actually separate Keycloak, Auth0, Entra, Ping and ClavionX, including when ClavionX is the wrong choice.

Put the feature matrices of a handful of identity platforms side by side and they're almost identical. OIDC: yes. SAML: yes. MFA, passkeys, SCIM, social login, B2B organizations, audit logs: yes, yes, yes. Occasionally a cell says "roadmap". A procurement team can spend a month on that spreadsheet and learn nearly nothing, because identity platforms eventually look the same. The protocols force convergence on what they do.

They don't converge on how. Underneath identical checkboxes, these platforms made very different decisions about a handful of things. Those decisions determine what your incidents look like, what your upgrades cost, and what you'll be unable to do in year three.

This post is the summary of a series that looked at each platform against ClavionX in depth:

Disclosure: I work on ClavionX. For a lot of readers the answer below won't be ClavionX, and the section on when it's the wrong choice is the one I'd most like you to read.

Four questions that actually separate them

1. Where does your custom logic run?

This question predicts more about long-term operations than any other.

Where customer logic runs What it costs you
Ory Your own login and consent app; Hydra redirects to it and waits for a callback on a documented API You write and secure the login UI; failures stay confined to the login and consent steps
authentik Python expressions evaluated inside the server, with HTTP available Most expressive; policy-edit rights are effectively code-deploy rights
Keycloak Java providers (SPIs) inside the server JVM Upgrade work; your code shares a process with the signing keys
FusionAuth In-process JavaScript lambdas with no network access, unless on plans with HTTP Connect; transactional webhooks can gate operations Pure lambdas are bounded; HTTP Connect and transactional webhooks are synchronous dependencies
Auth0 Node.js Actions in Auth0's sandbox, 20 s per trigger Login latency and availability track your dependencies; fail-open decisions live in your code
Cognito Lambda triggers in your own AWS account, 5 s, up to 3 attempts Retries amplify load on a slow dependency; cold starts count against the budget
Zitadel Out-of-process HTTP targets (Actions v2); in-process JavaScript (v1) deprecated Timeout and fail-open/closed set per target; interrupt-on-error can lock the instance
Okta No code; inline hooks call your service, 3 s (token hooks don't retry) A short, bounded synchronous dependency
Entra No code; a REST callout at token issuance, 2 s with retries, then fail A bounded synchronous dependency
Ping Java adapters, scripted nodes, or DaVinci orchestration flows The login can become a visual distributed system
ClavionX None; declarative attributes plus data pushed ahead of time via SCIM Some requirements can't be met at all; you build the sync

Read that column top to bottom and it's a spectrum, from "anything is possible" to "almost nothing is possible, by design". No position on it is free. At one end, the cost appears as upgrades and incidents. At the other, it appears as feature requests you can't satisfy.

ClavionX has one honest exception. LDAP and Active Directory password verification is a synchronous bind at login, because a password you don't hold can't be pre-synced.

2. Who holds the pen on security posture?

  • In Keycloak, the realm administrator does, per client, per realm.
  • In Auth0, the tenant administrator does, and any Action author can add claims or deny access.
  • In Entra, the publisher defines the app and each consuming tenant wraps it in its own Conditional Access policies.
  • In Ping, whoever owns each connection and policy does, across however many engines you've licensed.
  • In FusionAuth, tenant and application administrators do, along with whoever writes the lambdas.
  • In Zitadel, the organization that owns a project decides which roles it grants to other organizations, and each receiving organization manages its own users within that set.
  • In Ory, your own login and consent application does. Hydra issues tokens once your app accepts the request.
  • In authentik, whoever can edit flows, policies and expressions does, and that power is effectively code-level.
  • In Okta, the org's administrators do, through app-level sign-on and authentication policies.
  • In Cognito, whoever owns the user pool's infrastructure code and its Lambda triggers does. Often that's the application team rather than a security team.
  • In ClavionX, the canonical application definition does. Redirect URIs, grant types, PKCE and token policy are fixed there, and a tenant can't loosen them.

If you're federating a sovereign enterprise's workforce, you want the consuming side to hold the pen, which is Entra's model. If you're a product team serving many customer tenants, you probably want one posture you can prove, which is ClavionX's. Many "which vendor?" debates are really this question in disguise.

3. Who operates it?

Hosted by vendor Self-managed
Keycloak Via third parties Yes, and it's the default
Auth0 Yes, the default; Private Cloud available No
Entra Yes, the only option No
Okta Yes, the only option No
FusionAuth Yes (FusionAuth Cloud) Yes, including a free Community plan; proprietary license
Zitadel Yes (Zitadel Cloud) Yes, open source under AGPL 3.0
Ory Yes (Ory Network) Yes, open source under Apache 2.0; Enterprise License for extras
authentik Check the vendor's current offering Yes, MIT-licensed core plus Enterprise edition; Postgres is the only dependency
Cognito Yes, as an AWS service No
Ping Yes Yes, with a long track record
ClavionX Yes Yes, with Helm and bring-your-own data stores

"Self-managed" should be read as a cost, not just a capability. It means you own upgrades, cache topology, key rotation, on-call and the deploy that logs everyone out. It's the right choice when data residency, air-gapped environments or regulatory control require it. When the only reason is that the license is cheaper, it's usually the wrong one.

4. How mature is the thing you actually need?

This is where maturity has to be measured per capability, not per vendor.

Capability Most mature today ClavionX status
Legacy SAML federation at scale Ping, Entra, Okta IdP and SP both work; gaps documented (e.g. inbound AuthnRequest signatures not yet verified)
Pre-built SaaS integration catalog Okta None
End users receiving cloud credentials Cognito (identity pools) Standard OIDC only; register as an IAM OIDC provider
Managed multi-region failover Cognito (replication, 2026) Not a managed feature; your architecture
Workload identity without secrets Entra Not available; secrets and certificates with rotation
RFC 8693 token exchange Keycloak (26.2+), Zitadel (v2.49+) Planned
Migrating users with existing password hashes FusionAuth No documented hash import; LDAP/AD password authority only
Intrinsic change history (event sourcing) Zitadel Separate append-only audit trail instead
AI agent authorization Auth0 (GA late 2025), Okta Agent SSO (GA August 2026) Design stage
Device-aware conditional access Entra Planned: network policies and adaptive MFA
LDAP/RADIUS server interfaces, authenticating proxy authentik (outposts) Not available; ClavionX can bind to LDAP but can't serve it
OAuth layer over an existing user store Ory Hydra Not available; ClavionX owns the user store
Relationship-based fine-grained authorization Ory Keto Out of scope; coarse groups and permissions only
Deep LDAP/Kerberos federation Keycloak LDAP/AD password authority only
Workflow orchestration at login Ping (DaVinci) Deliberately out of scope
Per-tenant issuer and signing keys, no customer code in runtime — Built; this is the design center

A vendor comparison that doesn't include a table like this, with its own product's gaps in it, is a sales document.

A decision path

Most real decisions resolve with a few questions asked in the right order:

flowchart TD
    A{"Workforce identity in a<br/>Microsoft 365 organization?"} -- yes --> E["Entra"]
    A -- no --> O{"Workforce SSO across<br/>a broad SaaS estate?"}
    O -- yes --> OK["Okta"]
    O -- no --> W{"All-in on AWS, users need<br/>AWS credentials directly?"}
    W -- yes --> CG["Cognito"]
    W -- no --> B{"Hundreds of legacy SAML partners,<br/>or login as a compliance workflow?"}
    B -- yes --> P["Ping"]
    B -- no --> C{"Need custom code at login<br/>(real-time external signals)?"}
    C -- "yes, hosted" --> AU["Auth0"]
    C -- "yes, self-run" --> K["Keycloak, FusionAuth,<br/>Zitadel, Ory or authentik"]
    C -- no --> D{"Multi-tenant product needing<br/>per-customer keys and uniform posture?"}
    D -- yes --> X["ClavionX is worth evaluating"]
    D -- no --> F["Any of them; choose on<br/>ops model and cost"]

Two notes on reading it. First, the paths aren't exclusive. A very common architecture is Entra or Okta for the workforce, with a product-facing platform federating to each customer's IdP over SAML and receiving users through SCIM. Second, the last box is more common than vendors like to admit. For a straightforward application with modest requirements, any of them will work. At that point the ops model and the price of the next five years matter more than architecture.

When ClavionX is the wrong choice

Directly, and without softening:

  • You need token exchange, delegation chains or agent authorization this quarter. Those are planned or in design, not shipped.
  • You need logic at login that depends on real-time external signals. ClavionX won't run it, by design, and pre-sync can't fully replace it.
  • You need adaptive, risk- or device-based access policy today. It's planned, not built.
  • You need self-service password recovery with a complete admin UI. The service layer exists and the control-plane UI is still in progress.
  • You need SCIM beyond /Users, such as group provisioning or bulk operations.
  • Your organization's risk model requires a vendor with a long production track record, or a long list of analyst reports and reference customers. ClavionX is younger than every other platform in this series, and a clean design isn't a substitute for years of production incidents already survived.

When it's worth a serious look

Consider ClavionX when you're building a multi-tenant product and each customer should get its own issuer and signing keys. It also fits when you want an application's security posture to be provable rather than audited tenant by tenant, and when a login path that depends on nothing you don't control matters more than one that can call anything. Finally, it fits when you need to run the runtime yourself and want a strict separation between the control plane and the runtime that serves logins, so an admin outage or admin load never touches sign-in.

If that describes your situation, run the experiments in How to Evaluate an Identity Vendor Without Reading Marketing Pages against ClavionX and against whichever of the others you're considering. Include the exit test. Then read Migrating Off an Identity Provider Without Downtime before you sign anything, with any vendor, including this one.

The actual difference

Every platform in this series is a coherent answer to a slightly different question:

  • Keycloak: what if the identity server could be made to do anything?
  • Auth0: what if identity were a developer tool you never had to operate?
  • Entra: what if identity were an attribute of the directory that already runs the organization?
  • Ping: what if every federation problem anyone has ever had came pre-solved?
  • Okta: what if the identity control point were neutral, comprehensive and run by specialists?
  • Cognito: what if identity were just another primitive in your cloud account?
  • FusionAuth: what if you could run code in the token path, as long as it can't wait on anything?
  • Zitadel: what if the identity system were the sum of every event that ever happened to it?
  • Ory: what if the identity system were a set of components joined at protocol boundaries you own?
  • authentik: what if an organization's admins had a programming language and needed only one database?
  • ClavionX: what if the identity runtime did less, but could guarantee all of it?

The features converge and the questions don't. Pick the platform whose question matches yours, and be suspicious of any comparison, this one included, that claims one question is simply correct.


Vendor details were checked against public documentation and announcements in September 2026, and all of these products change quickly. Verify anything load-bearing before you rely on it. ClavionX capability status is taken from its public docs and feature matrix. I work on ClavionX.