Keycloak VS oauth2-proxy

Compare Keycloak vs oauth2-proxy and see what are their differences.

Keycloak

Open Source Identity and Access Management For Modern Applications and Services (by keycloak)

oauth2-proxy

A reverse proxy that provides authentication with Google, Azure, OpenID Connect and many more identity providers. (by oauth2-proxy)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
Keycloak oauth2-proxy
229 98
19,762 8,632
3.0% 3.3%
10.0 9.0
5 days ago 5 days ago
Java Go
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Keycloak

Posts with mentions or reviews of Keycloak. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-03.
  • Securing Vue Apps with Keycloak
    3 projects | dev.to | 3 Apr 2024
    In this article we'll be using Keycloak to secure a Vue.js Web application. We're going to leverage oidc-client-ts to integrate OIDC authentication with the Vue app. The oidc-client-ts package is a well-maintained and used library. It provides a lot of utilities for building out a fully production app.
  • User Management and Identity Brokering for On-Prem Apps with Keycloak
    1 project | dev.to | 3 Apr 2024
    Keycloak has been a leader in the Identity and Access Management world since its launch almost 8 years ago. It is an open-source offering under the stewardship of Red Hat
  • Navigating Identity Authentication: From LDAP to Modern Protocols
    2 projects | dev.to | 28 Mar 2024
  • Ask HN: No-code, simple-setup user management
    1 project | news.ycombinator.com | 11 Mar 2024
    It sounds like what you're looking for is an identity provider.

    A popular open source option is https://www.keycloak.org/

    This application can manage your users, then you can use standards like OpenID or SAML to plug it into your application, of which there are usually many plugins to accomplish this depending on your tech stack.

  • Top 6 Open Source Identity and Access Management (IAM) Solutions For Enterprises
    3 projects | dev.to | 21 Feb 2024
    KeyCloak is a Cloud Native Computing Foundation (CNCF) project that offers enterprise IAM solutions. Keycloak emphasizes proficient enterprise authorization solutions by providing:
  • Outline: Self hostable, realtime, Markdown compatible knowledge base
    7 projects | news.ycombinator.com | 16 Jan 2024
    Outline only uses SSO for authentication. The solution when self hosting is use a private keycloak server [1]. This allows you to do email based auth.

    [1] https://www.keycloak.org/

  • Keycloak open redirect: wildcard redirect URIs can be exploited to steal tokens
    2 projects | news.ycombinator.com | 12 Jan 2024
    > Keycloak was good but has too much legacy for 10+ years.

    I got curious, actually seems to check out and explains why it's so well documented (but also complex and oftentimes confusing):

    > The first production release of Keycloak was in September 2014, with development having started about a year earlier.

    https://en.wikipedia.org/wiki/Keycloak

    https://github.com/keycloak/keycloak/releases/tag/1.0.0.Fina...

  • What Is OIDC?
    3 projects | news.ycombinator.com | 21 Dec 2023
    > Don't outsource either your authentication or authorization. Run it in-house.

    This is hard to do, though. I hope people here will drop a lot of combinations that work for them!

    Personally, for a small/medium scale project, I went with:

    Keycloak: https://www.keycloak.org/

    It supports various backing RDBMSes (like PostgreSQL, MariaDB/MySQL and others), allows both users that you persist in your own DB, as well as various external sources, like social login across various platforms, is an absolute pain to configure and sometimes acts in stupid ways behind a reverse proxy, but has most of the features that you might ever want, which sadly comes coupled with some complexity and an enterprise feeling.

    I quite like that it offers the login/registration views that you need with redirects, as well as user management, storing roles/permissions and other custom attributes. It's on par with what you'd expect and should serve you nicely.

    mod_auth_openidc: https://github.com/OpenIDC/mod_auth_openidc

    This one's a certified OpenID Connect Relying Party implementation for... Apache2/httpd.

    Some might worry about the performance and there are other options out there (like a module for OpenResty, which is built on top of Nginx), but when coupled with mod_md Apache makes for a great reverse proxy/ingress for my personal needs.

    The benefit here is that I don't need 10 different implementations for each service/back end language that's used, I can outsource the heavy lifting to mod_auth_openidc (protected paths, needed roles/permissions, redirect URLs, token renewal and other things) and just read a few trusted headers behind the reverse proxy if further checks are needed, which is easy in all technologies.

    That said, the configuration there is also hard and annoying to do, as is working with OpenID Connect in general, even though you can kind of understand why that complexity is inherent. Here's a link with some certified implementations, by the way: https://openid.net/developers/certified-openid-connect-imple...

  • Auth0 increases price by 300%
    7 projects | /r/webdev | 7 Dec 2023
    You couldn't pay me to use their bullshit...if you need an identity server/provider go with Keycloak. Open source, free, and standards based, works better and scales better too.
  • Hasura and Keycloak integration with NestJS server
    5 projects | dev.to | 7 Dec 2023
    #docker-compose.yml version: '3' volumes: postgres_data: driver: local services: postgres: container_name: postgres image: postgres:15-alpine restart: unless-stopped volumes: - postgres_data:/var/lib/postgresql/data - ./init/db:/docker-entrypoint-initdb.d/ command: postgres -c wal_level=logical ports: - '5433:5432' environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} hasura: container_name: hasura image: hasura/graphql-engine:v2.29.0 restart: unless-stopped depends_on: - postgres # - keycloak ports: - '6080:8080' volumes: - ./hasura/metadata:/hasura-metadata environment: ## postgres database to store Hasura metadata HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/hasura_metadata HASURA_GRAPHQL_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} HASURA_GRAPHQL_LOG_LEVEL: warn ## enable the console served by server HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' # set to "false" to disable console ## enable debugging mode. It is recommended to disable this in production HASURA_GRAPHQL_DEV_MODE: 'true' HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log ## enable jwt secret when keycloak realm is ready # HASURA_GRAPHQL_JWT_SECRET: '{ "type": "RS256", "jwk_url": "http://keycloak:8080/realms/development/protocol/openid-connect/certs" }' HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} HASURA_GRAPHQL_UNAUTHORIZED_ROLE: anonymous HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS: 'true' HASURA_GRAPHQL_MIGRATIONS_SERVER_TIMEOUT: 30 # To view tables in Postgres # pgweb: # container_name: pgweb # image: sosedoff/pgweb:latest # restart: unless-stopped # ports: # - '8081:8081' # environment: # - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable # depends_on: # - postgres keycloak: container_name: keycloak image: quay.io/keycloak/keycloak:22.0.5 command: ['start-dev'] # Uncomment following if you want to import realm configuration on start up # command: ['start-dev', '--import-realm'] environment: ## https://www.keycloak.org/server/all-config KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: password123 KC_DB: postgres KC_DB_PASSWORD: postgres_pass KC_DB_USERNAME: postgres KC_DB_SCHEMA: public KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak_db KC_HOSTNAME: localhost ports: - 8090:8080 depends_on: - postgres # Uncomment following if you want to import realm configuration on start up # volumes: # - ./realm-export.json:/opt/keycloak/data/import/realm.json:ro

oauth2-proxy

Posts with mentions or reviews of oauth2-proxy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-11.
  • Keycloak SSO with Docker Compose and Nginx
    21 projects | news.ycombinator.com | 11 Feb 2024
    Recently I looked into having a relatively simple SSO setup for my homelab. My main objective is that I could easily login with Google or GitHub auth. At my previous job I used both JetBrains Hub [1] and Keycloak but I found both of them a bit of a PITA to setup.

    JetBrains Hub was really, really easy to get going. As was my previous experience with them. The only thing that annoyed me was the lack of a latest tag on their Docker registry. Don't get me wrong, pinned versions are great, but for my personal use I mostly just want to update all my Docker containers in one go.

    On the other hand I found Keycloak very cumbersome to get going. It was pretty easy in dev mode, but I stumbled to get it going in production. AFAIK it had something to do with the wildcard Let's Encrypt cert that I tried to use. But after a couple of hours, I just gave up.

    I finally went with Dex [2]. I had previously put it off because of the lack of documentation, but in the end it was extremely easy to setup. It just required some basic YAML, a SQLite database and a (sub)domain. I combined Dex with the excellent OAuth2 Proxy and a custom Nginx (Proxy Manager) template for an easy two line SSO configuration on all of my internal services.

    In addition to this setup, I also added Cloudflare Access and WAF outside of my home to add some security. I only want to add some CrowdSec to get a little more insights.

    1. https://www.jetbrains.com/hub/

    2. https://dexidp.io/

    3. https://github.com/oauth2-proxy/oauth2-proxy

    3. https://github.com/alex3305/unraid-docker-templates

  • Multi client authentication with auth0 and oauth2-proxy
    2 projects | dev.to | 30 Jan 2024
    Authentication providers like Auth0 and Okta have become commonplace in software development. These providers help take this work off of your plate, and this can be made even easier by using a reverse proxy that provides authentication capabilities, like oauth2-proxy.
  • Why You Should Migrate to OAuth 2.0 From API Keys
    1 project | /r/programming | 11 Dec 2023
    There's also other problems you might run into when using JWT: - First using scopes for permissions like Slack does can generate a token so large that a server might refuse it (One of many examples: https://github.com/oauth2-proxy/oauth2-proxy/issues/644, any rational server won't allow unlimited sized header), in my company they did this with the convention of read:team:product:resource but if you're an admin and have every rights by default, then you can't use the generated token by default as it will be too large. I think Quarkus works that way and you might encounter some problems with you don't configure it correctly. - Second is that it will cost a lot of bandwidth to send this header each time you're doing something, and probably won't be the perfect answer for what you want to do (do you really have third parties calling your API ?) - Third is about security concerns, you might say that having your permissions in a token is not as bad as you might think but in case of a Man In The Middle attack, you could leak information about your company, process or business intelligence that could have been prevented. - Fourth and that'll be the last, is that you can't revoke a JWT. And if you say you can, then you don't need a JWT at the first time because it would defeat the principle of a self contained JWT.
  • Moving from Google workspace to Microsoft 365 and implementing Zero Trust
    2 projects | /r/sysadmin | 27 Nov 2023
    That is not how you do Zero Trust. You want to use an Identity Aware Proxy. There are lots of ways you can implement this with Google as your core auth. For example Pomerium or oauth2-proxy.
  • Microsoft launches Windows App for accessing PCs in the cloud from any device
    2 projects | news.ycombinator.com | 16 Nov 2023
    I use self-hosted Apache Guacamole (RDP) through a reverse proxy with Google SSO (oauth2-proxy[0]). So easy to access my desktop from virtually any browser (mobile isn't the best though). This would be a good solution for gaming, but for other activities RDP is unbeatable imo.

    [0] https://github.com/oauth2-proxy/oauth2-proxy

  • Best Practice For Serving Static (Frontend) Files with NGINX in K8s?
    2 projects | /r/kubernetes | 9 Jul 2023
    Meet https://oauth2-proxy.github.io/oauth2-proxy/ It could be deployed in the cluster somewhere and reuse it where needed. We do this to authenticate prometheus,alertmanager ui for useres
  • Any thoughts on implemented access control of self hosted front end apps?
    1 project | /r/selfhosted | 9 Jul 2023
    At work, I've used oauth2-proxy as a sidecar container (on Kubernetes) for an app that has no authentication mechanism. Pretty straightforward, works well. I think this or Authelia is your best bet.
  • Authentik reverse proxy vs swag
    3 projects | /r/selfhosted | 7 Jul 2023
    BTW also keycloak and other similar products offer the oauth-proxy capability, I even used the original oauth2-proxy https://github.com/oauth2-proxy/oauth2-proxy for a while, but it was getting too difficult to maintain for me. I used for a while https://github.com/thomseddon/traefik-forward-auth that was a smart hack configuring a single upstream provider, but it look abandoned. So I was considering authentik but apparently it's just oauth2-proxy embedded in it, at that point why not use oauth2-proxy directly.
  • How to build Auth in 2023 with go?
    6 projects | /r/golang | 31 May 2023
    Like auth basic? Mate, its 2023 get that RestAPI endpoint behind an OAuth proxy. github.com/oauth2-proxy/oauth2-proxy is a good one on a budget or use some cloud provider's ApiGateway and IAM services.
  • Pomerium or Authentik?
    3 projects | /r/selfhosted | 23 May 2023
    I use it in combination with oauth2-proxy, which sits in front of my network and the various services I host. https://github.com/oauth2-proxy/oauth2-proxy

What are some alternatives?

When comparing Keycloak and oauth2-proxy you can also consider the following projects:

authelia - The Single Sign-On Multi-Factor portal for web apps

traefik-forward-auth - Minimal forward authentication service that provides Google/OpenID oauth based login and authentication for the traefik reverse proxy

authentik - The authentication glue you need.

vouch-proxy - an SSO and OAuth / OIDC login solution for Nginx using the auth_request module

Apache Shiro - Apache Shiro

OPA (Open Policy Agent) - Open Policy Agent (OPA) is an open source, general-purpose policy engine.

caddy-auth-portal - Authentication Plugin for Caddy v2 implementing Form-Based, Basic, Local, LDAP, OpenID Connect, OAuth 2.0 (Github, Google, Facebook, Okta, etc.), SAML Authentication. MFA with App Authenticators and Yubico.

IdentityServer - The most flexible and standards-compliant OpenID Connect and OAuth 2.x framework for ASP.NET Core

Docusaurus - Easy to maintain open source documentation websites.

Spring Security - Spring Security

Pomerium - Pomerium is an identity and context-aware reverse proxy for zero-trust access to web applications and services.