# Auth.js (NextAuth.js) vs Keycloak

**Leader by Vioscale score:** Keycloak

| Attribute | Auth.js (NextAuth.js) | Keycloak |
|---|---|---|
| **Vioscale score** | 54.8 (47% (low)) | 71.8 (47% (low)) |
| activity.commits_last_30d | 7 | 100 |
| adoption.dependent_repos | 6,629 | 1,153 |
| adoption.github_stars | 28,345 | 36,428 |
| adoption.package_downloads_weekly | 5,865,070 | 1,713,825 |
| deployment.options | `{"self_hosted":true}` | `{"cloud":true,"hybrid":true,"on_prem":true,"self_hosted":true}` |
| description.long | An open-source authentication solution that integrates with web frameworks to provide OAuth-based authentication with customizable sign-in pages. | Centralized authentication and authorization platform that manages user identity and access control across applications, reducing the need for individual apps to build their own login systems. |
| features.capabilities | `{"hosting":"self","hosted_ui":"headless","open_source":true,"social_login":true}` | `{"mfa":true,"oidc":true,"rbac":true,"hosting":"both","saml_sso":true,"hosted_ui":"both","open_source":true,"passwordless":true,"social_login":true,"b2b_multi_tenant":true,"passkeys_webauthn":true,"scim_provisioning":true}` |
| integrations.count | 1 | 10 |
| integrations.list | `[{"name":"GitHub"}]` | `[{"name":"GitHub"},{"name":"Google"},{"name":"Facebook"},{"name":"Twitter"},{"name":"LDAP"},{"name":"Active Directory"},{"name":"Kerberos"},{"name":"Kubernetes"},{"name":"Apache APISIX"},{"name":"OpenTelemetry"}]` |
| language.primary | TypeScript | Java |
| license.spdx | ISC | Apache-2.0 |
| market.availability | - | `{"primaryMarkets":[],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` |
| platform.support | `{"web":true}` | `{"cli":true,"web":true,"linux":true,"windows":true}` |
| pricing | `{"type":"open_source","summary":"Free and open source","freeTier":true,"sourceUrl":"https://authjs.dev","retrievedAt":"2026-08-14T11:04:51.520Z"}` | `{"type":"open_source","summary":"Free, open-source software","freeTier":true,"sourceUrl":"https://www.keycloak.org","retrievedAt":"2026-08-14T13:39:48.793Z"}` |
| pricing.free_tier | yes | yes |
| pricing.model | commercial | open_source |
| pricing.price_level | free | free |
| pricing.transparent | - | yes |
| release.cadence_days | - | 13 |
| release.history | `[{"url":"https://github.com/nextauthjs/next-auth/releases/tag/next-auth%404.24.15","date":"2026-07-20T23:22:47Z","type":"stable","version":"next-auth@4.24.15"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/xata-adapter%401.11.3","date":"2026-07-20T21:54:07Z","type":"stable","version":"@auth/xata-adapter@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/upstash-redis-adapter%402.11.3","date":"2026-07-20T21:54:09Z","type":"stable","version":"@auth/upstash-redis-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/unstorage-adapter%402.11.3","date":"2026-07-20T21:54:11Z","type":"stable","version":"@auth/unstorage-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/typeorm-adapter%402.11.3","date":"2026-07-20T21:54:13Z","type":"stable","version":"@auth/typeorm-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/sveltekit%401.11.3","date":"2026-07-20T21:54:00Z","type":"stable","version":"@auth/sveltekit@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/surrealdb-adapter%402.2.3","date":"2026-07-20T21:54:14Z","type":"stable","version":"@auth/surrealdb-adapter@2.2.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/supabase-adapter%401.11.3","date":"2026-07-20T21:54:16Z","type":"stable","version":"@auth/supabase-adapter@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/solid-start%400.19.3","date":"2026-07-20T21:54:02Z","type":"stable","version":"@auth/solid-start@0.19.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/sequelize-adapter%402.11.3","date":"2026-07-20T21:54:18Z","type":"stable","version":"@auth/sequelize-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/qwik%400.9.3","date":"2026-07-20T21:54:03Z","type":"stable","version":"@auth/qwik@0.9.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/prisma-adapter%402.11.3","date":"2026-07-20T21:54:19Z","type":"stable","version":"@auth/prisma-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/pouchdb-adapter%402.11.3","date":"2026-07-20T21:54:21Z","type":"stable","version":"@auth/pouchdb-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/pg-adapter%401.11.3","date":"2026-07-20T21:54:23Z","type":"stable","version":"@auth/pg-adapter@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/neon-adapter%401.11.3","date":"2026-07-20T21:54:24Z","type":"stable","version":"@auth/neon-adapter@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/neo4j-adapter%402.11.3","date":"2026-07-20T21:54:26Z","type":"stable","version":"@auth/neo4j-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/mongodb-adapter%403.11.3","date":"2026-07-20T21:54:28Z","type":"stable","version":"@auth/mongodb-adapter@3.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/mikro-orm-adapter%402.11.3","date":"2026-07-20T21:54:30Z","type":"stable","version":"@auth/mikro-orm-adapter@2.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/kysely-adapter%401.11.3","date":"2026-07-20T21:54:31Z","type":"stable","version":"@auth/kysely-adapter@1.11.3"},{"url":"https://github.com/nextauthjs/next-auth/releases/tag/%40auth/hasura-adapter%401.11.3","date":"2026-07-20T21:54:33Z","type":"stable","version":"@auth/hasura-adapter@1.11.3"}]` | `[{"url":"https://github.com/keycloak/keycloak/releases/tag/nightly","date":"2022-09-27T02:22:00Z","type":"prerelease","version":"nightly"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.7.2","date":"2026-08-19T05:26:20Z","type":"stable","version":"26.7.2"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.7.1","date":"2026-08-05T15:54:37Z","type":"stable","version":"26.7.1"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.7.0","date":"2026-07-09T06:58:13Z","type":"stable","version":"26.7.0"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.6.4","date":"2026-06-26T19:19:51Z","type":"stable","version":"26.6.4"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.6.3","date":"2026-06-04T17:00:13Z","type":"stable","version":"26.6.3"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.6.2","date":"2026-05-19T12:41:03Z","type":"stable","version":"26.6.2"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.6.1","date":"2026-04-15T13:58:02Z","type":"stable","version":"26.6.1"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.6.0","date":"2026-04-08T08:54:19Z","type":"stable","version":"26.6.0"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.7","date":"2026-04-02T14:47:13Z","type":"stable","version":"26.5.7"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.6","date":"2026-03-19T06:45:39Z","type":"stable","version":"26.5.6"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.5","date":"2026-03-05T15:40:30Z","type":"stable","version":"26.5.5"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.4","date":"2026-02-20T09:19:45Z","type":"stable","version":"26.5.4"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.3","date":"2026-02-10T07:30:08Z","type":"stable","version":"26.5.3"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.2","date":"2026-01-23T14:26:58Z","type":"stable","version":"26.5.2"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.1","date":"2026-01-14T18:09:13Z","type":"stable","version":"26.5.1"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.5.0","date":"2026-01-06T07:42:32Z","type":"stable","version":"26.5.0"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.4.7","date":"2025-12-01T08:14:11Z","type":"stable","version":"26.4.7"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.4.6","date":"2025-11-25T17:32:43Z","type":"stable","version":"26.4.6"},{"url":"https://github.com/keycloak/keycloak/releases/tag/26.4.5","date":"2025-11-12T15:24:23Z","type":"stable","version":"26.4.5"}]` |
| reliability.status_page | yes | - |
| security.disclosure_policy | yes | yes |
| security.scorecard | 6 | 7.9 |
| security.vulnerabilities | `{"count":0,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=npm&package_name=%40next-auth%2Fprisma-adapter&per_page=100","last_12m":0,"max_severity":null}` | `{"count":58,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=maven&package_name=org.keycloak%3Akeycloak-core&per_page=100","last_12m":0,"max_severity":"CRITICAL"}` |

## Capabilities (Auth & Identity Software)

| Capability | Auth.js (NextAuth.js) | Keycloak |
|---|:--:|:--:|
| **Deployment** |  |  |
| Hosting | Self-hosted only | Cloud + self-hosted |
| **Methods** |  |  |
| Social login | ✓ | ✓ |
| Passwordless | - | ✓ |
| Passkeys / WebAuthn | - | ✓ |
| Multi-factor auth | - | ✓ |
| **Enterprise** |  |  |
| SAML SSO | - | ✓ |
| SCIM provisioning | - | ✓ |
| B2B / multi-tenancy | - | ✓ |
| **Standards** |  |  |
| OpenID Connect provider | - | ✓ |
| **Delivery** |  |  |
| Hosted UI | Headless | Both |
| **Access** |  |  |
| RBAC | - | ✓ |
| **Licensing** |  |  |
| Self-hostable OSS core | ✓ | ✓ |

*Source: Vioscale. Generated 2026-09-01T17:09:42.719Z. "-" = undocumented, not absent.*
