Keycloak and Argo CD SSO integration

Argo CD can sign users in through Keycloak directly over OIDC. This page covers the client type to choose, the groups claim, RBAC mapping, security settings and the failures teams hit most.

On this page

Keycloak Argo CD SSO integration: what it does and which method to use

Platform teams that already run Argo CD and Keycloak usually want one identity source for GitOps access, so engineers sign in to Argo CD with the same accounts they use everywhere else. Argo CD can do this in two ways: through its bundled Dex component, or by connecting directly to an existing OpenID Connect provider such as Keycloak. This integration uses the second path, which means Keycloak becomes the provider Argo CD trusts and Dex is not part of the sign-in chain. The work itself is client configuration in Keycloak, a groups claim included in the tokens Argo CD receives, and a mapping from Keycloak groups to Argo CD RBAC roles.

The integration covers what happens between the two products: the Argo CD OIDC settings, the Keycloak client and its redirect URIs, the scopes and claims Argo CD reads, and the RBAC policy that decides what each group may do with projects and applications. It does not cover the Kubernetes cluster that Argo CD deploys to, the Kubernetes API authentication model, or the Keycloak hosting and high availability design. Those are separate steps with their own owners, and they should be scheduled as prerequisites or follow-on work. Confirm that Keycloak is reachable over TLS from the Argo CD pods and that the hostnames used for the issuer URL are the same ones clients will see.

The first real decision is the client type. A confidential client with a client secret is the standard setup for the Argo CD web interface, and it keeps the secret inside Kubernetes. If engineers also use the argocd CLI with SSO, the CLI needs a flow that does not depend on a stored secret on the laptop, and PKCE is the method that supports it. Decide early whether the CLI is part of the requirement, because enabling it changes the Keycloak client settings and the Argo CD configuration. Confirm the exact client options and CLI behavior against the Argo CD user management documentation for the version you deploy, since those details change between releases.

The second decision is the groups claim. Argo CD maps roles from claims in the token, so Keycloak must put group membership into the token under a claim name Argo CD is configured to read. Check which groups are included (direct membership or subgroups), whether the claim is present on ID tokens and on the access token the CLI uses, and how group names appear so they match the RBAC policy exactly. Map groups to Argo CD roles in a short, reviewed policy file, and remember that admin.enabled should be set to false once SSO works, as the user management guide recommends, so the built-in admin account does not remain an unmanaged way in.

What you need before configuring Keycloak Argo CD SSO

Five prerequisites set the values that the Keycloak and Argo CD configuration depends on. Each one fixes a hostname, trust relationship, permission or version that later steps reuse, so confirm them before you create any client. Changing a hostname or certificate after setup means updating both systems again.

Keycloak realm and admin access

Plan a dedicated realm for Argo CD and keep the master realm for administration only. The account you use needs rights to create clients, client scopes and protocol mappers in that realm, plus the ability to manage users and groups for role mapping later. Confirm that your running Keycloak is at the version you intend to keep. The current release is 26.8.1, published October 13, 2026, and its upgrade notes cover enforced SMTP StartTLS and mandatory signature validation of backchannel logout tokens, so check whether those affect your existing installation.

Argo CD instance and external URL

Argo CD needs a running instance with a single external URL that users reach in a browser and that the argocd CLI uses for sign-in. The url value in argocd-cm must match that address exactly, because the redirect URI you register in Keycloak is built from it. Confirm that the hostname resolves from user workstations and from the Argo CD server to Keycloak, and that the URL does not change during the rollout.

Cluster admin access to ConfigMaps

Editing argocd-cm and argocd-rbac-cm requires cluster admin or an equivalent role in the namespace where Argo CD runs. Export both ConfigMaps before any change so you can roll back a broken login or policy quickly. Argo CD 3.0 removed repository definitions from argocd-cm, so check that the configuration you carry forward from an older release does not still expect them there. Record who may approve these edits, since a wrong RBAC rule can lock administrators out.

TLS certificate both systems trust

Keycloak and Argo CD both need HTTPS endpoints with a certificate that the other side trusts. Keycloak's production guide calls for TLS on all communication, and Argo CD contacts Keycloak's OIDC discovery endpoint from inside the cluster, so a private certificate authority must be trusted by the Argo CD server as well as by browsers. Confirm that the certificate covers the exact hostnames you will register, and that its chain is complete and unexpired before you start.

Target versions and upgrade notes

Decide on target versions before configuration starts, because SSO settings differ between releases. For Argo CD, v3.5.5 was marked latest on the GitHub releases page on October 12, 2026, alongside patch releases v3.4.11 and v3.3.16, and v3.6.0 was in release candidate. Only the three most recent minor versions receive patches, so pick a supported line. Confirm both targets against the Keycloak and Argo CD upgrade notes, and write the exact versions into your change record.

Client secret or PKCE: choosing the Keycloak client type for Argo CD

The first decision in this integration is whether the Keycloak client for Argo CD is confidential, which means it holds a client secret, or public, which means it uses PKCE and has no secret. A confidential client suits the Argo CD web UI, because the Argo CD API server completes the OpenID Connect code exchange on the server side and can keep the secret out of the browser. A public client using PKCE removes the secret from the picture, but the argocd command-line tool must sign in through a browser flow and then hold the resulting tokens on the workstation. Argo CD's user management documentation describes the OIDC integration options, so confirm in the current Argo CD operator manual which client settings the CLI flow requires before you choose.

The trade-off is operational. A client secret has to be created in Keycloak, stored in Kubernetes (Argo CD reads it from its configuration rather than from the Argo CD ConfigMap in plain form), and rotated on a schedule your security team approves. Every rotation touches the Keycloak client, the Kubernetes secret and a restart or reload of the component that reads it, so the runbook should name the owner, the change window and the verification step. Keep the secret out of Git repositories and out of Argo CD Applications that it manages, since a GitOps tool that deploys its own login credentials creates a circular dependency during recovery.

A PKCE client removes the secret to rotate, but it moves the risk into redirect URI and login design. Keycloak only redirects to URIs listed in the client configuration, so each allowed value must be exact: the Argo CD UI callback, and any local callback the CLI uses on a loopback port. Avoid wildcard redirect URIs for an identity provider that controls access to deployment tooling. Decide also how CLI users will obtain access in practice, including whether they sign in from managed laptops only, how tokens expire, and how you will revoke a session when an engineer leaves. Test the CLI login from a workstation that matches your standard image, not only from an administrator's machine.

Before deciding whether one client can serve both the UI and the CLI, check the current Argo CD documentation for the exact client and CLI configuration in the version you run, because the supported pattern can change between releases. If the documentation supports one client for both, you keep a single set of redirect URIs and one lifecycle to manage. If it requires separate clients, you will have two configurations to review, two sets of redirect URIs and possibly two audit trails. Record the decision with the Argo CD version it was tested against, and rerun the sign-in test for the UI and the CLI after every Argo CD upgrade.

How to configure the Keycloak client for Argo CD sign-in

This sequence takes a Keycloak realm from its target state to a working OpenID Connect client for Argo CD, with redirect settings, a groups claim and Argo CD's own OIDC configuration in place. It ends with a browser sign-in that returns a verified identity and mapped Argo CD roles. Confirm exact configuration keys against the Argo CD user management documentation for the version you run.

  1. Confirm or create the target realm

    Decide whether Argo CD gets a dedicated realm or uses an existing one that already holds the users and groups it needs. A dedicated realm keeps Argo CD's clients, groups and test users separate from other applications, which makes access reviews easier. If you reuse a realm, confirm that the users who need Argo CD access exist there and that their group memberships are correct. This step is done when the realm's OpenID Connect discovery document loads at the issuer path on your Keycloak hostname, which you can check with a browser or curl.

  2. Create the Argo CD client with the chosen type

    In the Keycloak admin console, create an OpenID Connect client for Argo CD. Keep client authentication on for a confidential client if browser sign-in is all you need, and generate the client secret from the Credentials tab. If the argocd CLI must sign in through Keycloak, use a client configured for PKCE, which you enable in the client's advanced settings, because the CLI flow cannot rely on a stored secret. Record the client ID and store any secret in your secrets manager. This step is done when the client appears in the realm's client list with the chosen authentication setting.

  3. Set redirect URIs and the web origin

    Set the valid redirect URI to the Argo CD callback address built from its external URL, and set the web origin to that same base address so the browser can complete the token exchange. Use the exact external URL users type, including scheme, host and any path prefix, and avoid wildcards that would reach other applications. For the CLI flow, add the local redirect addresses that the argocd CLI listens on, as listed in the Argo CD user management documentation for your version. This step is done when a sign-in request from the Argo CD login page reaches the Keycloak login screen without a redirect URI error.

  4. Add the groups claim and client scopes

    Add a protocol mapper to the Argo CD client, or to a shared client scope it uses, that places the user's group memberships into a claim named groups. Decide whether group names should appear as short names or full paths, based on how you will write the RBAC mappings, and include only groups Argo CD needs. Add the email and profile scopes to the client's default scopes so Argo CD receives the standard identity claims. This step is done when a test token for a member of a mapped group contains the groups claim with that group name, which you can confirm in the client scopes evaluation view or by decoding the ID token.

  5. Point argocd-cm at the Keycloak issuer

    Set the Argo CD external URL under the url key in the argocd-cm ConfigMap, then add an oidc.config entry that names the Keycloak realm issuer URL, the client ID and the requested scopes, including the groups claim. Reference the client secret from argocd-secret rather than writing it into the ConfigMap. Confirm the exact key names and any version-specific fields against the Argo CD user management documentation before applying changes, then restart the Argo CD server if your release requires it. This step is done when the login page offers a Keycloak sign-in option and the server logs show no OIDC configuration errors at startup.

  6. Map Keycloak groups to Argo CD roles

    In argocd-rbac-cm, set the default policy to no permissions, then add group bindings that connect each Keycloak group name from the groups claim to an Argo CD role or to project-level permissions. A default of no permissions means a user with no mapped group sees nothing until an administrator grants access. Apply the change, then sign in as a test user from each mapped group. This step is done when each test user sees the expected projects and applications, and a user outside all mapped groups sees none. Keep the mapping file in version control so changes go through review.

  7. Verify sign-in and disable the local admin

    Test the full path in a fresh browser session: web sign-in, sign-out and sign-in again, then the argocd CLI login using the flow you configured. Confirm that session expiry and logout behave as expected for your Keycloak session settings. After SSO and group roles work for at least one administrator, set admin.enabled to false in argocd-cm, as the user management documentation recommends once SSO is configured. Document and test a break-glass path first, such as a second administrator account, so a faulty group mapping cannot lock everyone out. This step is done when a test administrator completes both sign-in paths and the local admin account no longer accepts a password.

Adding a groups claim so Argo CD sees Keycloak groups

Argo CD cannot apply group-based RBAC unless the token it receives carries a groups claim that lists the user's Keycloak groups. A group membership mapper has to be configured on the Keycloak client, because the claim does not appear on its own. The mapper settings determine the claim name, the token where the claim lands (ID token, access token or userinfo) and the form of each group value. Treat these settings as part of the Argo CD RBAC design, since the policy file refers to them directly, and record them in the same change that adds the policy.

Two things must match exactly. The claim name in the Keycloak mapper must equal the claim name Argo CD is configured to read, and each group value in the token must equal the string the RBAC policy references. With the full group path option enabled, nested groups are emitted as paths such as /platform/argocd-admins, so a policy line that uses argocd-admins alone will never match. Choose full path or short name once, document the choice, and verify it with a real user before writing the policy. Confirm in your Argo CD version's documentation whether group matching is case-sensitive.

Argo CD requests scopes at login, and the groups claim only arrives if the requested scopes include the client scope that holds the mapper. Check the scopes and requested claims keys in the Argo CD OIDC configuration and in the user management documentation for your version, then confirm that the Keycloak client scope containing the mapper is assigned to the Argo CD client. A mapper placed on a scope the client never requests produces tokens that look correct in the Keycloak admin console but carry no groups when Argo CD receives them. Decode a test token to confirm what is actually sent.

The main risk is a groups claim that is missing for some users, not for all. Users with no group membership, users whose sessions predate a group change, and local or service accounts may arrive without the claim. Argo CD then evaluates those users against its default policy, which may grant little or no access. Decide in advance what an unassigned user should see, and test at least one user with no groups alongside a user in the intended group. Confirm how the default policy is set in your deployment before you rely on it.

Version also determines which user identity claim the policy uses. The Argo CD 3.0 upgrade notes say Dex-based RBAC now uses the federated_claims.user_id claim. That note applies when sign-in runs through the bundled Dex. If Keycloak is connected directly as an OIDC provider, confirm which claim names apply to your version before writing the policy, and check the groups claim name in a test login instead of assuming the Dex example carries over. Repeat that check after every Argo CD upgrade.

How Keycloak groups map to Argo CD RBAC roles

This table pairs each Keycloak object with its Argo CD counterpart, from realm groups and client scopes to the argocd-rbac-cm policy. Read it top to bottom as the chain a login follows, from the token Keycloak issues to the permissions Argo CD grants. Confirm each row in your own environment before rollout, especially the user identifier claim and the 2.14 to 3.0 permission changes.

Keycloak or Argo CD objectMapping in this integrationWhat to confirm before rollout
Realm groupBecomes the RBAC subject that a policy line grants permissions to, referenced by its group name in argocd-rbac-cm.Group names match exactly, including case, and are the names your policy lines reference.
Group membership and groups claimMembership is emitted in the groups claim of the ID token, which Argo CD reads to resolve the user's groups.The groups mapper is attached to the Argo CD client and the claim appears in a test login token.
Client scope and requested claimsA client scope controls which claims the Argo CD client requests, so the groups claim is only sent when that scope is requested.The scope that carries the groups mapper is a default or requested scope for the Argo CD client.
User identifier claimArgo CD's RBAC matches users by a claim value, which must be the same claim the integration is configured to use as the user ID.The identifier claim is stable and unique across users and matches the value your policy lines use.
Argo CD built-in rolesThe role:readonly and role:admin roles ship with Argo CD and can be bound to groups through policy lines.The built-in roles still exist in your Argo CD version and their scope fits your teams.
Custom policy lines in argocd-rbac-cmEach line grants a subject permissions on resources such as applications, projects or logs, and is written in the policy.csv field.Each line has been tested with a user in each group, and a denied action fails as expected.
Default policy settingThe policy.default key sets the role applied when a user matches no explicit line, and a default with broad rights would widen access.policy.default is set to the least-privileged role you intend, and you have tested a user with no group.
Update and delete RBAC (2.14 to 3.0)From 3.0, update and delete permissions apply only to the application itself, so policy lines that relied on broader scope need rewriting.Existing lines are reviewed against the 3.0 upgrade notes and update and delete actions were retested after the upgrade.
Logs access (2.14 to 3.0)Viewing application logs now requires an explicit logs, get permission in the policy, and users without it will not see logs.Groups that need logs have an explicit logs, get line, and a non-logs user is confirmed to be denied.

Securing Keycloak Argo CD SSO after the first login works

A working sign-in is the starting point, not the finish line. The controls below cover who can reach each component, which tokens and redirects the systems trust, and which accounts keep working as a fallback. Review them together, because a weakness in one layer often undoes the protection of another.

Retire the built-in admin user

Argo CD ships with a built-in admin account for initial setup. The Argo CD user management documentation recommends using it only for setup and disabling it by setting admin.enabled to false once SSO or local users are configured. Confirm that at least one SSO user with the correct role can still reach the UI and CLI before you disable it, and record how you would recover access if the Keycloak login path failed.

Serve both systems over TLS

Keycloak's production guide calls for TLS on all communication, and Argo CD's login flow sends authorization codes and tokens through the browser and the argocd CLI. Terminate TLS for the Keycloak issuer URL and the Argo CD external URL with certificates your clients trust, and check that the redirect and issuer URLs in both configurations use https. Mixed or plaintext URLs are a common cause of silent token failures.

Use exact redirect URIs

Each Keycloak client should list the full Argo CD callback URL and, if you use PKCE for the argocd CLI, the local loopback redirect that the CLI opens. Avoid wildcards in valid redirect URIs and web origins, since a broad pattern lets an attacker-controlled URL receive authorization codes. Review the client settings after every hostname change, because an old wildcard can outlive the URL it was meant for.

Separate the Keycloak admin console

Keycloak's production guide recommends exposing the admin console and Administration REST API on a different hostname or context path from public frontend URLs. Keep the Argo CD sign-in path on the public frontend hostname and place the admin console behind a restricted network path or reverse proxy rules. Confirm which hostname the Argo CD issuer uses so that restricting the admin path does not block token and discovery endpoints.

Keep the client secret in a Kubernetes Secret

If you use the confidential client flow, the Keycloak client secret must not appear in the argocd-cm ConfigMap or in version-controlled manifests. Reference it from a Kubernetes Secret so the value stays out of plain configuration. Plan rotation as part of the design: a rotated secret must be updated in the Secret and in Keycloak together, and the rotation steps should be tested in a non-production cluster first.

Validate backchannel logout tokens

The Keycloak 26.8 upgrade notes make signature validation of backchannel logout tokens from external providers mandatory. If your design relies on logout propagation from an external identity provider, confirm that the provider's keys are configured in Keycloak and that test logout tokens are accepted or rejected as expected. Treat this as a dependency check before any upgrade to 26.8 or later.

Grant least privilege in RBAC

Map each Keycloak group to the narrowest Argo CD role that does the job, using the policy.csv and scopes settings in argocd-rbac-cm. Argo CD's 2.14 to 3.0 upgrade notes say update and delete permissions apply only to the application itself, and log access needs an explicit logs, get permission. Review default policy values, avoid granting admin-level access to broad groups, and test each mapped role with a non-admin account.

Review sessions and group membership

Token lifetimes in Keycloak and session expiry in Argo CD determine how long a removed user keeps access, so set them as part of the design rather than leaving defaults in place. Decide how quickly a group change in Keycloak should take effect in Argo CD, and whether a user who loses a group keeps an active session until it expires. Ask your team to document these lifetimes and test a group removal end to end before go-live.

Testing Keycloak Argo CD SSO before you cut over

Before you point Argo CD at Keycloak for everyone, run a verification plan that proves each RBAC role behaves the way you designed it. The plan should use separate test users, one per role you mapped from Keycloak groups to Argo CD RBAC, plus a user who belongs to no group at all. Testing with a single administrator account proves little, because that account often bypasses the mappings you are trying to validate. Each test user should be a normal Keycloak user placed in exactly the groups the design assigns, so the groups claim Argo CD receives matches what production will send.

Cover the login paths separately. First, sign in through the web UI and confirm the user lands in the expected view. Second, if you chose a client configuration that supports the argocd CLI, run an argocd login with that user and confirm the CLI session works. The CLI path is where client type decisions show up in practice, so test it as a distinct case rather than assuming the browser result carries over. Third, sign in as the user in no group and confirm access is denied. Fourth, sign in as a user who should see only one project and confirm that project is visible and the others are not. Fifth, confirm the built-in admin account is disabled by attempting to log in with it and checking that the setting you chose, not a leftover password, controls access.

Negative tests matter more than the happy path. Expire a session, or shorten the token lifetime in a test setting, and confirm Argo CD asks the user to sign in again rather than continuing with stale rights. Then remove a test user from its Keycloak group and confirm the change takes effect. Be precise about what you observe: a token already issued may still carry the old groups claim until it expires, so record how long the old access persists and whether your operating model accepts that window. Do not assume the change is instant because the group was removed in Keycloak.

Record the expected result for every case before running it: the user, the login method, the action attempted, the expected outcome and the observed outcome. A written matrix lets an auditor or a second engineer repeat the test and lets you see drift when a later Keycloak or Argo CD upgrade changes behavior. Keep the test accounts and groups in a non-production realm if your environment has one, so test data never mixes with real workforce identities and the test users can be deleted cleanly afterward. If you only have one realm, confirm with your identity team how test accounts will be labeled, restricted and removed before they are created.

Confirm the Argo CD and Keycloak versions you are testing against, and repeat the matrix after any upgrade to either product. Argo CD's user management guidance and its RBAC behavior have changed across releases, so the test results only apply to the versions tested. Ask whoever runs the cutover to sign off on the matrix and to keep it with the change record, because the evidence is what proves the integration was verified before production users depended on it.

Why Keycloak Argo CD SSO login fails and how to fix it

This table lists the sign-in and access failures teams most often hit when connecting Argo CD to Keycloak, with the likely cause, the first log or setting to check, and the fix. Work down the rows in order when a login fails, since redirect and issuer errors block sign-in before group mapping is ever reached. Confirm exact claim names and flag behavior against the Argo CD and Keycloak versions in your environment.

FailureLikely causeCheck firstFix
Redirect URI mismatchThe Keycloak client redirect URI does not exactly match the Argo CD URL, including scheme, host and pathKeycloak client settings and the browser error pageSet the valid redirect URI to the exact Argo CD callback URL served over HTTPS
Issuer or TLS trust errorArgo CD cannot reach the Keycloak issuer URL, or the certificate chain is not trusted by the Argo CD podsArgo CD server logs for x509 or issuer errorsMake the issuer URL match the Keycloak realm URL and add the internal CA to Argo CD's trusted certificates
Groups claim missing from tokensNo groups mapper on the client, so the ID token carries no groups claimDecoded ID token in a test login and the client mappers tabAdd a group membership mapper to the client with the claim name Argo CD expects
Group names differ in path or caseKeycloak returns full group paths such as /platform-admins, but the RBAC policy uses a different name or casingThe groups claim values in the token against policy.csv entriesMatch the group string exactly, or set the mapper to emit short group names consistently
CLI login fails with a confidential clientThe argocd CLI needs a public client or PKCE flow, and a confidential client with a secret cannot complete its redirectArgo CD CLI error output and the client access type settingUse a separate public client with PKCE for the CLI, or confirm the flow your Argo CD version supports
Users locked out after disabling adminadmin.enabled was set to false before any SSO or RBAC user with admin rights could sign inArgo CD configuration and the RBAC role bindings for SSO groupsVerify an SSO admin works before disabling the built-in admin, and keep a recovery path under your change control
RBAC changes not appliedArgo CD keeps group claims from the token issued at the earlier sign-inThe user's current token contents and the policy.csv edit timestampAsk the user to sign out and sign in again, then confirm the new group appears in the token

Questions teams ask before configuring Keycloak Argo CD SSO

How much work is a Keycloak and Argo CD SSO integration?

The core configuration is a single OIDC client, a groups claim and an RBAC policy, so the size of the job depends on how many decisions sit around it. The main drivers are:

  • The number of Argo CD instances and Kubernetes clusters that will sign users in
  • The number of Argo CD projects and how many distinct access levels you need
  • How many Keycloak groups must map to Argo CD roles, and who owns each group
  • The number of environments (for example development, staging and production) that each need their own client settings and redirect URLs
  • Your TLS setup, including certificate chains and whether Argo CD and Keycloak sit behind the same reverse proxy

A single instance with a small, agreed group model is much smaller work than several clusters with environment-specific mappings. Ask any partner to show the group and project model in the written scope before pricing.

How long does Keycloak Argo CD SSO setup usually take?

Duration follows the same drivers as effort, plus how quickly your teams make decisions and approve changes. The configuration itself is short, but the calendar time often goes to agreeing the group-to-role model, getting Keycloak admin access, and testing with real users across each environment. Teams that have already settled their identity groups and certificates typically finish faster than teams that must define both first. No standard duration applies here, so ask for a timeline tied to a written scope, with named dependencies on your side such as access approvals, change windows and test users.

What does the integration need from our team before work starts?

Plan for four kinds of access and ownership before the work begins:

  • Keycloak admin access to create the Argo CD client, configure the groups claim and adjust the realm or client scopes
  • Cluster admin access to edit the Argo CD configuration, RBAC policy and secrets in each cluster you target
  • Group ownership, meaning a named owner for each Keycloak group who can approve membership and confirm which Argo CD role it should receive
  • Test users in each group, so you can check that read-only, deployer and admin access behave as designed

Also confirm the public hostnames for Argo CD and Keycloak, and who will approve changes to production.

Can our internal platform team set up Keycloak Argo CD SSO on its own?

Yes, a team that already runs Keycloak and Argo CD can usually complete the basic setup, and many do. The points that most often need experience are choosing between client secret and PKCE (PKCE is needed for the argocd CLI), adding a groups claim correctly, and writing RBAC so that group membership does not grant more than intended. Ask whether the team has someone who has tested sign-in for the CLI and the web UI, and whether it can run a test plan covering each role and each environment. If the answer to either is no, a fixed-scope review or implementation can cover those points without taking over your platform.

Which Argo CD and Keycloak versions should we check before configuring SSO?

Check both versions against your current support status before you copy any configuration. Argo CD publishes patch releases for only its three most recent minor versions, so an older release may need an upgrade before SSO work makes sense. The Argo CD 2.14 to 3.0 upgrade notes also change how RBAC applies to updates, deletes and logs, and they make Dex-based RBAC use the federated_claims.user_id claim. Keycloak moves to new minor releases several times a year. Confirm the exact Argo CD and Keycloak versions in your environment and read the upgrade notes for each before writing the RBAC policy.

What should a fixed-scope quote for this integration list?

A fixed-scope quote should state the work in terms you can check against delivery. It should list the Argo CD instances, clusters, projects and environments in scope, the Keycloak realm and client settings to be created, the groups claim design and the group-to-role mapping table, and the TLS and hostname decisions. It should name the test plan, the test users required, the acceptance criteria, and the customer dependencies such as access grants and approvals. Ask whether the quote covers only configuration, or also documentation, handover and any follow-up support, and whether support is a separate retainer. Ask which costs are one-time and which recur.

What breaks most often in Keycloak Argo CD SSO setups?

The most common failures come from mismatched configuration rather than missing features. Typical causes include a redirect URL that does not match the public Argo CD hostname, a groups claim that is not included in the ID token or access token that Argo CD reads, group names that differ between Keycloak and the RBAC policy, and a CLI that cannot sign in because the client does not support PKCE. TLS errors appear when the certificate chain is incomplete or the reverse proxy alters headers. Before go-live, check each role with a test user, confirm that the local admin account is disabled once SSO works, and record which group maps to which role.

How DeployOpen scopes and delivers Keycloak and Argo CD SSO

DeployOpen plans, builds and documents Keycloak and Argo CD SSO integration inside infrastructure you control, from the Keycloak client design through the Argo CD RBAC mapping. Engagements are fixed-scope, with the scope, deliverables and timelines agreed in writing before work starts.

How we scope

  • Confirm the Keycloak realm, the Argo CD version and whether Argo CD uses bundled Dex or a direct OIDC connection.
  • Decide client secret or PKCE per access path, including whether the argocd CLI needs browser sign-in.
  • Agree which Keycloak groups map to which Argo CD RBAC roles and projects in the written scope.

How we build

  • Configure the Keycloak client, redirect URIs and a groups claim mapper, then verify tokens before touching Argo CD.
  • Set the Argo CD OIDC settings, RBAC policy and group mappings as declarative configuration kept in version control.
  • Test each role with real test accounts, including denied actions, and disable the built-in admin user once SSO works.

How we hand over

  • Deliver the configuration, client settings and RBAC mapping as documentation your team can review and change.
  • Walk through the group-to-role model, the token claims used and the steps to add or remove a user or group.
  • Record the upgrade checks to repeat when Keycloak or Argo CD releases change authentication behavior.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can cover re-testing SSO after Argo CD minor releases and Keycloak upgrades in your environment.
  • Confirm response expectations and the upgrade scope with DeployOpen in writing before the retainer starts.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.