Skip to content

ComparePre-1.0 · Design-partner program

Nauthera next to the identity providers you know.

Nauthera next to Keycloak, Dex, authentik, Zitadel and Ory Hydra, each fact with its source, and where each of them fits best.

By Michael Beutler, FounderPublished

Nauthera's difference

Nauthera's difference is where the client lives: its operator turns an OIDCClient manifest into a registered client, delivers a secret the server generated and keeps only as a digest, and reports a client changed elsewhere as Drifted instead of overwriting it. Nauthera is pre-1.0, in a design-partner program: its signed server and operator images and its Helm chart are public on the GitHub Container Registry, and teams can apply for one of five design-partner seats to pilot it with direct support. The source is private. The tools below are past their 1.0; for a production deployment before Nauthera's, pick one of them.

Each row about another tool names the release that was current on November 4, 2026, and links where the fact was read that day; a link to a repository's default branch is that branch as it was on that day. Two pages go further: Keycloak and Nauthera, criterion by criterion, and Keycloak with Terraform, or an operator, one client through both workflows.

Prior art, and where Nauthera differs

The client resource is part of the provider itself, not an add-on to one; the server generates each secret, keeps only its digest, and the operator writes it into a Secret, so no secret is supplied by hand or kept in a state file; and a client changed outside the operator is reported as Drifted and left alone until someone restores it.

Others declare clients as custom resources too:

  • Ory Hydra Maester watches oauth2clients.hydra.ory.sh/v1alpha1 resources and writes each client's ID and secret into a Secret. Its README says it "is developed by the Ory community and is not actively maintained by Ory core maintainers" (README; latest tag v0.0.42, May 25, 2026).
  • Crossplane provider-keycloak manages Keycloak clients as openidclient.keycloak.crossplane.io resources, generated with Upjet from the Keycloak Terraform provider (README; v3.2.3, October 19, 2026).
  • truvity/zitadel-operator, a third-party operator for Zitadel, declares OIDCApp resources and writes client_id and client_secret into a Secret (pkg.go.dev; v0.21.0, September 6, 2026).
  • Keycloak's own operator added KeycloakOIDCClient and KeycloakSAMLClient resources as an experimental feature in 26.7.0 and promoted them to preview in 26.8.0 (release notes, Managing clients; Keycloak 26.8.1).

Side by side

Runtime and database

ToolRuntime and database
NautheraThe server is one static Go binary in a scratch image for amd64 and arm64, running as non-root on a read-only root filesystem with every Linux capability dropped, and so is the operator. It runs on PostgreSQL, with Redis for any production issuer, and sends no telemetry.
Keycloak 26.8.1Java: the server image runs OpenJDK 21 (release notes, 26.6.0). Its sizing guide starts from 1,250 MB of memory per pod (sizing). PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL Server and others, which you provision yourself (databases, operator).
Dex v2.46.1Storage in etcd, Kubernetes custom resources, SQLite3, PostgreSQL or MySQL; SQLite3 "is not appropriate for real workloads" (storage).
authentik 2026.8.5PostgreSQL only, since Redis was removed in 2025.10 (2025.10 notes). Docker Compose needs at least 2 CPU cores and 2 GB of RAM (Compose install).
Ory Hydra v26.2.0Binaries of 5 to 15 MB "without system dependencies"; PostgreSQL, MySQL or CockroachDB (README).
Zitadel v4.20.1PostgreSQL 14 or later (README).

Protocols

ToolProtocols it serves to applications
NautheraOAuth 2.0 and OpenID Connect, with PKCE, pushed authorization requests and DPoP. It does not serve SAML, SCIM provisioning, user import or token exchange (RFC 8693); users sign in through OpenID Connect providers, GitHub, LDAP or Active Directory, or with an account of its own. Nauthera is not OpenID Certified.
Keycloak 26.8.1OpenID Connect and OAuth 2.0, and two that Nauthera does not serve: SAML 2.0 (keycloak.org) and, since 26.8.0, a SCIM API (release notes).
Dex v2.46.1OpenID Connect: it "uses OpenID Connect to drive authentication for other apps" (README).
authentik 2026.8.5Providers for OAuth 2.0 and OpenID Connect, and for what Nauthera does not serve: SAML, LDAP, RADIUS, outbound SCIM, a proxy, remote access, SSF and WS-Federation (providers); SSF needs authentik Enterprise (pricing).
Ory Hydra v26.2.0OAuth 2.0 and OpenID Connect, certified by the OpenID Foundation, its README says (README).
Zitadel v4.20.1OpenID Connect, and two that Nauthera does not serve: SAML and a SCIM 2.0 server (README).

Where users sign in from

ToolAccounts and upstream providers
NautheraIts own accounts, with passwords, passkeys and TOTP; upstream OpenID Connect providers and GitHub, each an IdentityProvider; LDAP or Active Directory by password bind, an LDAPDirectory. An upstream provider must have a public address (air-gapped identity).
Keycloak 26.8.1Its own accounts; brokering to OpenID Connect providers, social login, and LDAP and Active Directory federation; and two sources Nauthera does not offer, SAML providers and Kerberos (server admin guide).
Dex v2.46.1Connectors for LDAP, GitHub, GitLab, OpenID Connect, OAuth 2.0, Google, Microsoft, SAML 2.0 and others, each marked stable, beta or alpha; the SAML connector is not maintained, marked "Unmaintained and likely vulnerable to auth bypasses" (README). A local password database is optional (local connector).
authentik 2026.8.5Its own accounts, and sources for LDAP and OAuth, and for three Nauthera does not offer: Kerberos, SAML and SCIM (sources).
Ory Hydra v26.2.0None of its own: it "connects to your existing identity provider through a login and consent app" that you build (README).
Zitadel v4.20.1Its own accounts, with passkeys and MFA; LDAP and enterprise identity providers (README).

Administration

ToolHow it is administered
NautheraAn admin dashboard per organization shows its clients, identity providers, users, sessions, audit log and threat signals, and manages users (create, invite, suspend, block, delete, password resets), their roles and sessions. Clients are declared as resources rather than edited there. Beside it, an admin REST API described by OpenAPI.
Keycloak 26.8.1An Admin Console, and an Account Console where users manage their own sign-in (server admin guide).
Dex v2.46.1Its configuration file, and a gRPC API that is off by default and has no authentication "beyond TLS client auth" (API). The docs describe no admin console.
authentik 2026.8.5An admin interface, "a visual tool for the creation and management of users and groups, tokens and credentials" (docs).
Ory Hydra v26.2.0Headless: a "standalone OAuth 2.0 and OpenID Connect server without user management", with no login pages of its own (README).
Zitadel v4.20.1The Management Console, "the web-based Dashboard UI designed to facilitate the management and administration of ZITADEL resources and settings" (Console).

OAuth clients as Kubernetes resources

ToolHow a client is declared, and what keeps it true
NautheraAn OIDCClient (nauthera.io/v1alpha1), the intended way to register your own applications' clients; dynamic registration is for software others deploy. The server mints the secret and keeps a hash; the operator writes it into a Secret. A client changed elsewhere is reported as Drifted, not undone, until the manifest changes or the resource is annotated nauthera.io/restore (operator).
Keycloak 26.8.1KeycloakOIDCClient and KeycloakSAMLClient (k8s.keycloak.org/v2alpha1), a preview behind the client-admin-api:v2 feature. You supply the secret, and the operator "does not detect external changes and will overwrite them" (Managing clients). KeycloakRealmImport creates a realm and never updates it (realm import).
Dex v2.46.1Static clients in the configuration file, or the gRPC API; its custom resources are storage that "aren't meant to be consumed by end users" (storage).
authentik 2026.8.5Blueprints: YAML files, mounted from a directory, fetched from an OCI registry or kept in authentik's database, each applied in one transaction and rescanned every 60 minutes by default (blueprints); the Helm chart mounts them from ConfigMaps or Secrets (chart values, 2026.8.5). authentik records each blueprint instance's status (successful, warning, error) itself, not on a resource in the cluster (models.py).
Ory Hydra v26.2.0Hydra Maester v0.0.42, a community add-on: OAuth2Client resources (hydra.ory.sh/v1alpha1), with the ID and secret written into a Secret (Maester README).
Zitadel v4.20.1Zitadel's own Terraform provider 3.8.7, which keeps a generated secret in state (application_oidc); truvity/zitadel-operator v0.21.0, a third party's, declares OIDCApp resources (pkg.go.dev).

License

ToolLicense
NautheraApache-2.0 for the core is planned; the software has no public license today.
Keycloak 26.8.1Apache License 2.0 (LICENSE.txt).
Dex v2.46.1Apache License 2.0 (LICENSE).
authentik 2026.8.5MIT, apart from the authentik/enterprise directory, which has its own license (LICENSE); some features need authentik Enterprise (pricing).
Ory Hydra v26.2.0Apache License 2.0; an Ory Enterprise License and the managed Ory Network are offered beside it (README).
Zitadel v4.20.1AGPL-3.0 since v3.0 (announcement, March 13, 2025), with Apache License 2.0 and MIT exceptions for some directories (README).

Release and project

ToolWhere it stands
NautheraNauthera is pre-1.0, in a design-partner program: its signed server and operator images and its Helm chart are public on the GitHub Container Registry, and teams can apply for one of five design-partner seats to pilot it with direct support. The source is private.
Keycloak 26.8.1Four minor releases a year (release updates); an incubating project of the Cloud Native Computing Foundation since April 10, 2023 (cncf.io).
Dex v2.46.1A sandbox project of the Cloud Native Computing Foundation since June 25, 2020 (cncf.io); releases on GitHub.
authentik 2026.8.5Released October 21, 2026, with calendar versions (releases).
Ory Hydra v26.2.0Released March 20, 2026 (releases); Hydra Maester is "not actively maintained by Ory core maintainers" (Maester README).
Zitadel v4.20.1Released November 3, 2026 (releases).

When Nauthera fits best

  • Your apps ship as manifests (Helm, Argo CD, Flux), and each team owns its clients beside its Deployment.
  • No client secret in Git or a state file: the server generates it and keeps a digest, and the operator writes the Secret.
  • A tenant per issuer: each organization has its own discovery document, keys, users, sessions and audit log.
  • Current OAuth security without plugins: DPoP, pushed authorization requests, signed request objects, and PKCE with S256 required by default.
  • A small, auditable footprint: one static Go binary in a scratch image, and a hash-chained audit log with signed checkpoints.

When another tool is the better choice

ToolThe better choice when
Keycloak 26.8.1You need SAML 2.0, Kerberos or SCIM, which Nauthera does not support; LDAP user federation; an account console for users; or a Cloud Native Computing Foundation project with four minor releases a year (server admin guide; cncf.io; release updates). Keycloak and Nauthera goes through it criterion by criterion.
Keycloak with Terraform 5.10.0 or Crossplane v3.2.3You already run Terraform and Keycloak: the provider manages realms, flows, mappers and identity providers as well as clients, and keeps a secret out of state with the write-only client_secret_wo (provider docs). Keycloak with Terraform, or an operator follows one client through both.
Dex v2.46.1You only federate existing identities, such as a GitHub organization, LDAP or Google, into Kubernetes, Argo CD or Grafana, and want no user database of your own; or you need kubectl login, which Dex documents (Kubernetes guide).
authentik 2026.8.5You want many protocols from one deployment: OIDC, and SAML, LDAP, RADIUS, outbound SCIM, a proxy and remote access, which Nauthera does not serve (providers).
Ory Hydra v26.2.0You want a headless OAuth 2.0 and OpenID Connect server behind a login and consent app you build yourself, on top of a user system you already have (README).
Zitadel v4.20.1You want SaaS-style multi-tenancy, with instances, organizations and projects, and SAML and a SCIM 2.0 server, neither of which Nauthera has (README).

The operator page compares the approach with Terraform and Ansible in general: Why a Kubernetes operator.

Where Nauthera stands

What its code has today: OAuth 2.0 and OpenID Connect with PKCE, pushed authorization requests and DPoP-bound tokens; organizations, each its own issuer; sign-in with passkeys, TOTP, upstream OpenID Connect providers, GitHub and LDAP or Active Directory; a hash-chained audit log with signed checkpoints; an admin dashboard; and the operator, which reconciles OIDCClient, Organization, IdentityProvider, Branding, LDAPDirectory and BrokerMembership. It emits no groups claim, so applications map roles by email or another claim it does emit. Standards lists every specification, and Existing identity providers covers running it beside the provider you have.

Release updates

Hear when the operator ships

One email when the operator ships. No newsletter.

By joining, you agree to our Privacy Policy and Terms.

Design partners

Apply for a design-partner seat

Five teams get calls with the founder, a say in the operator's design, and direct support when they pilot it.

Optional

We store your answers with your email address to select design partners. Privacy Policy