authentik and Apache Guacamole SSO integration

Sign in to Apache Guacamole with authentik over OpenID Connect, or decide whether authentik's RAC provider covers your browser-based remote access without a separate Guacamole deployment.

On this page

Signing in to Apache Guacamole with authentik SSO

The supported method for signing users in to Apache Guacamole with authentik is OpenID Connect, following the Apache Guacamole guide in the authentik integrations catalog, which is marked with authentik support level. The decision you face is not how to configure that login, but whether to keep Guacamole as your browser gateway at all, or to use authentik's own RAC provider for browser access to Windows, macOS and Linux machines. Settle that question first, because it determines whether you build and operate a second system. Guacamole splits into two parts. The Guacamole web application is written in Java and provides the web interface and the authentication layer. The guacd daemon is separate: it listens for connections from the web application, reads just enough of the Guacamole protocol to choose a client plugin, and those plugins connect to the remote desktop servers on the user's behalf. Both components are released under the Apache License, Version 2.0, so licensing does not decide the question. Operating cost and the number of moving parts do. You will run the web application, guacd and a database backend (MariaDB or MySQL, PostgreSQL or SQL Server are documented), and the OIDC extension sits inside that stack.

If you keep Guacamole, confirm three things before you start: the Guacamole version you will run (1.6.0 was released on June 22, 2025), the OIDC extension settings your installation needs, and how group claims from authentik will map to Guacamole permissions, since Guacamole's database still holds connection and user grants. If you move to the RAC provider instead, confirm that it covers every protocol and target you use today, that its RAC outpost can reach your target hosts, and that your session recording and audit requirements are met without the Guacamole session recording player. Write that comparison down with your security team, then choose one path and plan the cutover. Running both for long periods doubles your patching and access review work.

What you need before configuring Guacamole SSO

Guacamole SSO depends on a few pieces being in place before any client settings are touched. Each card below is one item to confirm, from the authentik release line to the database Guacamole stores its state in.

Supported authentik release line

Run authentik on a release line that still receives security fixes. The security policy lists 2026.5.x and 2026.8.x as supported, and the project announces security releases at least 24 hours in advance, so plan a maintenance window that can absorb a patch on short notice. Confirm the exact version against the authentik Guacamole guide before you start, because the guide's steps are tied to a specific authentik version.

Guacamole version to standardize on

Pick the Guacamole release your team will run and record it in your change log. Apache Guacamole 1.6.0 was released on June 22, 2025, and the OpenID Connect extension must match the Guacamole server version it loads into. Check the extension version named in the authentik guide, since a mismatch between the web application and the extension is a common cause of failed sign-in.

Database backend for Guacamole

Guacamole stores connection definitions, users and permissions in a database. The manual documents MariaDB or MySQL, PostgreSQL and SQL Server, so choose the engine your database team already backs up and patches. Decide this before deployment, because moving connection definitions later means exporting and re-importing them, and the OIDC login does not replace the need for a database account.

DNS names and TLS certificates

Give authentik and Guacamole each a stable DNS name with a certificate trusted by the browsers and the authentik server. The OpenID Connect redirect URI must match the Guacamole address exactly, including scheme and path, so a name change later breaks sign-in. Confirm which certificate authority your organization uses and whether internal clients need its root certificate installed.

OAuth2/OIDC provider in authentik

Create an OAuth2/OpenID Connect provider and application in authentik for Guacamole before editing Guacamole's configuration. You will need the client ID, client secret, issuer URL and the redirect URI that Guacamole expects, and the provider must issue the group or user claims that Guacamole uses to decide access. Keep a local Guacamole administrator account available so you can recover if the identity provider is unreachable.

Remote targets and access paths

List the Windows, macOS and Linux machines users will reach over RDP, SSH and VNC, along with the network paths from the guacd host to each one. If you plan to use authentik's RAC provider instead of a separate Guacamole server, confirm the protocols and outpost placement it needs, because that changes which of these items you still need to build.

How to configure the OpenID Connect sign-in step by step

This sequence connects Apache Guacamole to authentik over OpenID Connect so users sign in through authentik, while a local administrator account stays available for recovery. Each step ends with a check you can run before moving on.

  1. Create the OAuth2/OIDC provider in authentik

    In the authentik admin interface, create an OAuth2/OpenID Connect provider for Guacamole and record its client ID and client secret. Choose a confidential client type, set the authorization flow you intend to use, and note the issuer URL that authentik shows for the provider, since Guacamole needs it in a later step. Confirm the provider appears in the providers list with the expected name. The step is done when you can open the provider and read back the client ID, the client secret and the issuer URL without errors.

  2. Create the application and bind it to the provider

    Create an application in authentik that uses the provider from the previous step, and set a slug that you will reuse in the issuer path. Restrict access with a policy or group binding so that only the people who should reach Guacamole can start the sign-in. Confirm the application is visible in the user library for a test account in the bound group and hidden for an account outside it. Both checks are done when the test accounts behave as expected.

  3. Set redirect URIs and scopes

    On the provider, enter the redirect URI that matches your Guacamole base URL with the OpenID Connect callback path described in the Guacamole extension documentation, using https. Keep the scopes to the standard openid, profile and email set unless your group claim design needs an additional scope. Confirm the redirect URI matches character for character, including the trailing path, because a mismatch is the most common cause of a failed callback. Verify by opening the provider's configuration and comparing the saved URI to the one in your Guacamole reverse proxy settings.

  4. Install the Guacamole OpenID Connect extension

    Install the OpenID Connect extension on the Guacamole web application, following the Guacamole manual for your installation method, whether native or Docker. Place the extension JAR in the Guacamole extensions directory and restart the Tomcat-hosted web application so it loads. Check the Guacamole logs for a line showing the extension loaded without errors. Keep the existing database or local authentication extension in place at this stage so you retain a working login path.

  5. Set the issuer and client settings in guacamole.properties

    Edit guacamole.properties to add the OpenID Connect issuer, authorization endpoint, token endpoint, client ID, client secret, redirect URI and the username claim name, using the values recorded from authentik. Set the username claim to a stable attribute your organization uses, such as the preferred username, and confirm the exact key names against the version of the extension you installed. Restart Guacamole and check the logs for a successful load of the OpenID Connect settings with no missing-property warnings.

  6. Map the username claim to Guacamole accounts

    Decide how the claim value from authentik maps to Guacamole usernames, and confirm that the value is unique across your user base. Sign in once with a test account and review which username Guacamole created or matched. If you already have local Guacamole accounts, check that the claim values match their usernames exactly, since case or formatting differences create duplicate accounts. The step is done when the test user lands on the Guacamole home page under the expected name and the existing permissions apply.

  7. Test an interactive sign-in and review the authentik event log

    Sign in to Guacamole from a clean browser session through the authentik login, complete any MFA step your policy requires, and confirm you reach the Guacamole home page. Then open the authentik event log and find the authorization and login events for that user, checking that the application and provider names are correct and no failure events appear. This check confirms both the authentik side and the Guacamole callback. Record the result before you move on.

  8. Confirm the local administrator account still works

    Before you disable local login or retire the old authentication path, sign in to Guacamole with the local administrator account using the database or local credentials. Confirm that this account can open the administration pages and change settings. Keep the recovery credentials stored in your secrets manager and document how to switch the OpenID Connect extension off if authentik is unavailable. The step is done when the local administrator login succeeds in a fresh session.

Mapping authentik claims and groups to Guacamole accounts

This table compares each OIDC claim authentik returns with the Guacamole role it feeds and the checks needed before relying on it. Read it as a sequence: the identity arrives from authentik, Guacamole matches it to an account, and only then do group-based permissions apply. The main takeaway is that a successful login does not by itself grant access to any connection.

Claim or elementWhat it carriesHow Guacamole uses itWhat to verify in your environment
Subject (sub)Stable unique identifier for the authentik userTypically not the display name; confirm which claim the integration matches to the Guacamole usernameConfirm the claim is stable across renames and that it does not change between test and production
Username (preferred_username)The authentik usernameCandidate for the Guacamole username, which must match an existing account in the backendCheck that usernames are unique and that case handling matches the backend's account records
EmailThe user's email addressInformational unless your configuration maps it to an account fieldConfirm whether your Guacamole build uses email for matching or only for display
Groups claimGroup names the user belongs to in authentikGroup membership can drive Guacamole user group permissions, if the mapping is configuredVerify the group claim is present in the ID token or userinfo response and the names match exactly
Guacamole account in backendA user record in the database, LDAP directory or other backend Guacamole readsPermissions attach to accounts and groups in this backend after loginConfirm whether the account must be created in advance and whether auto-creation is available for your chosen backend
Connections and permissionsRemote desktop or SSH connections and the users or groups granted accessAccess is granted here, separate from authenticationTest that each group can see only the intended connections, with a non-admin test user
Admin accountLocal or break-glass Guacamole administratorUsed when the OIDC configuration or group mapping failsKeep one tested admin path outside SSO and confirm it works before cutover

When authentik's RAC provider can replace a separate Guacamole deployment

The RAC provider in authentik gives signed-in users browser access to Windows, macOS and Linux machines over RDP, SSH and VNC through a RAC outpost. If the only requirement is that people reach a known set of machines through the same identity provider that governs everything else, a second gateway may add operating cost without adding a capability you need. That is a hypothesis to test, not a default. Start by listing the protocols, the number of target machines, and who needs access to which systems, then check each item against the RAC provider documentation before deciding whether authentik alone covers it.

Several items decide the question and should be verified rather than assumed. First, confirm session recording requirements: if auditors or incident responders need recorded remote sessions, check what authentik's RAC provider records in your version and compare it with the session recording player extension the Guacamole manual describes. Second, confirm protocol coverage and any extension needs, such as smart card, MFA or session-specific behavior that you depend on today. Third, if you run Guacamole now, inventory its database-backed administration on MariaDB or MySQL, PostgreSQL or SQL Server, including connection definitions, user mappings and connection history, and decide whether that data must be kept, exported or retired. Ask your team which of these is required, because each one can change the answer.

Keeping an existing Guacamole deployment is usually the simpler path when its users, connection history or recordings must survive, or when your team already runs its extensions and backups reliably. In that case, the integration guide covers the OpenID Connect sign-in layer with authentik and leaves the gateway in place. If you migrate to the RAC provider, plan a parallel run, confirm the target machine list and access policies in authentik, and agree in writing with the team that owns the machines which history will be retained. The result of this check is a documented decision, which is what a scope review or a fixed-scope quote should start from.

Hardening the Guacamole and authentik connection

The Guacamole sign-in path runs through authentik, and the remote desktop sessions run through Guacamole and guacd, so a weak point in either one exposes every machine behind it. The cards below cover the controls that connect the two products: the OIDC trust, the MFA gate, the internal traffic between Guacamole and guacd, recovery access, encryption and session audit.

Restrict the redirect URI and client secret

The OpenID Connect client in authentik should accept only the exact callback URL of your Guacamole host, with no wildcards and no extra schemes or ports you do not run. Store the client secret in your secret manager and inject it into the Guacamole configuration at deploy time, not in a shared file. Check that the client secret rotates through a documented procedure, and confirm which token lifetimes authentik applies to the client so a stolen session ends quickly.

Enforce MFA in authentik before Guacamole

Guacamole trusts the identity that authentik asserts, so the second factor must be enforced in authentik's authentication flow, not in Guacamole. Bind the MFA stage to the application or to the group that holds Guacamole access, and confirm that users cannot reach the OIDC authorization step through a flow that skips it. Test with an account that has no second factor enrolled to confirm enrollment is required.

Limit guacd to the web application

The guacd daemon listens for TCP connections from the Guacamole web application and should never be reachable from user networks. Bind it to a loopback or private interface, and restrict its port with host or network firewall rules so only the Guacamole web application host or container can connect. In a containerized setup, keep guacd on an internal network with no published port. Verify this with a port scan from a user subnet.

Keep a break-glass local admin

If authentik is down or its signing keys or provider settings are misconfigured, every Guacamole user is locked out. Keep a local Guacamole administrator account with a strong, offline-stored password and a documented procedure for enabling it. Test the break-glass path on a schedule, and confirm that the local account is excluded from the OIDC-only login policy you apply to daily users.

Encrypt every hop

Serve the Guacamole web interface only over HTTPS, and make sure the browser-to-authentik and authentik-to-Guacamole OIDC redirects and token calls use TLS with certificates your clients trust. Confirm that the connections from Guacamole to the database and to the target machines over RDP, SSH and VNC use the encryption those protocols support. Record which hop terminates TLS at a reverse proxy, because the proxy then becomes part of the trust boundary.

Enable session recording where audit requires it

Where access to remote machines must be auditable, install the session recording player extension and configure recording on the connections that need it. Decide retention and access to recordings before go-live, since recordings can capture sensitive screens and commands. Confirm with your auditors which connections must be recorded and whether the RAC provider in authentik would cover the same requirement for your setup.

Testing the sign-in, permissions and session paths

The identity team owns the authentik side of the OpenID Connect flow. Their checks confirm that the Guacamole client is registered correctly, that the redirect URI matches the one Guacamole uses, and that the tokens carry the claims Guacamole needs to map users and groups. Run these checks with a test user and a test group before any production user signs in, and keep the results with the change record.

  • Provider and application settings: Confirm the OAuth2/OIDC provider, the application entry and the redirect URI match the values in the Guacamole configuration exactly, including scheme and path.
  • Token claims: Sign in as a test user and inspect the ID token or userinfo response to confirm the username and group claims appear with the names Guacamole expects.
  • Group membership: Add the test user to one group that should have access and to one that should not, then confirm the claims change accordingly.
  • Flow behavior: Check that the authorization and login flow sends the user to the expected MFA stage and returns them to Guacamole without loops.

Save each claim sample so the platform team can compare it against what Guacamole receives.

Common failures in authentik and Guacamole SSO

This table lists the failures teams most often hit when wiring authentik to Apache Guacamole over OpenID Connect, with the likely cause and the fix for each. Read it while testing the sign-in path, because several symptoms look identical from the browser but have different causes in authentik, Guacamole or the target host.

FailureLikely causeFix
Redirect URI mismatchThe redirect URI registered in the authentik OAuth2/OIDC provider does not exactly match the callback URL Guacamole sends, often because of a scheme, host name, port or trailing path difference behind a reverse proxy.Copy the callback URL from the Guacamole OIDC settings, paste it into the authentik provider's redirect URIs exactly, then retest from a fresh browser session.
Wrong issuer URLThe OpenID issuer configured in Guacamole points to the wrong application slug or to the authentik root instead of the provider's issuer endpoint, so discovery and token validation fail.Take the issuer value from the authentik provider's details in the admin interface and set it in Guacamole exactly, including the application slug and no extra trailing characters.
Username claim does not match a Guacamole accountGuacamole matches the claim it receives to an existing user name, and the claim configured (for example, the preferred username) differs in case or value from the account created in Guacamole.Confirm which claim Guacamole reads, compare it with the value authentik returns for a test user, then align the username or the claim setting. Ask the vendor guide which claim the integration expects.
Signed in, but no connections visibleGuacamole authenticates the user but the account has no permissions on any connection, so the connection list is empty after login. Group claims are often not mapped to Guacamole permissions.Grant the user or a group read permission on the required connections in Guacamole, or map the authentik group claim to a Guacamole user group that holds those permissions. Verify with a test account.
Admins locked out when SSO failsThe only administrator account is an OIDC-linked user, and a misconfigured issuer, client secret or redirect URI blocks every login path.Before enabling SSO, keep a local Guacamole administrator with a known password and test it. Document the procedure for disabling the OIDC extension if the identity provider is unavailable.
guacd cannot reach the target hostThe guacd daemon runs on a different host or network segment than the target, so it cannot open RDP, SSH or VNC sessions, even though the web sign-in succeeds.Test the protocol port from the guacd host to the target, check firewall and routing rules, and confirm the connection settings (host, port, credentials) in Guacamole. Review guacd logs for the error.
RAC outpost cannot reach the target when using authentik RACWhen authentik's RAC provider is used instead, the RAC outpost lacks network access to the remote machine, or the outpost is not running or registered.Verify the outpost is running and connected to authentik, then test the RDP, SSH or VNC port from the outpost's network. Confirm the target is listed in the RAC provider configuration.
Session recording or extension missing after upgradeAn extension such as OpenID Connect or session recording is absent in the new Guacamole build or the image was not updated alongside the web application.Check the extension files deployed with the running Guacamole version, match extension and web application versions, and retest sign-in after each upgrade.

Questions buyers ask about authentik and Guacamole SSO

What drives the cost of an authentik and Guacamole SSO integration?

Scope drives most of the cost: how many target protocols and applications are involved, whether Guacamole runs natively or in Docker, and whether authentik's RAC provider is part of the design. Database work matters too, because Guacamole supports MariaDB or MySQL, PostgreSQL and SQL Server backends, and the authentik side depends on its own PostgreSQL. Certificate work adds effort when internal certificate authorities, reverse proxies or custom trust chains are involved. A written scope should list each component, who operates it after handover, and what testing is included. Ask for the quote to separate one-time build work from any recurring support or upgrade retainer, since those are priced differently and recur on different schedules.

How long does the integration take to complete?

The duration depends mostly on how ready your environment is when work starts. Existing DNS names, a working authentik instance, a Guacamole host you can reach, and a defined test group shorten the path, while missing access, unclear ownership of certificates or undecided RAC requirements extend it. DeployOpen does not estimate durations in this section. Ask for a timeline in the written scope, and confirm which dependencies the timeline assumes you will meet and by which dates. Delays from waiting on approvals or change windows are common in regulated environments and should be named explicitly in the plan.

What does our team need to provide before the work starts?

Plan for administrative access to the authentik instance and the Guacamole host, a DNS name for each service, and certificates that the browsers and servers will trust. You will also need a small test group in authentik with known users, the group names you plan to map to Guacamole permissions, and a named contact who can approve changes. If the RAC provider is in scope, add network paths from the RAC outpost to the remote Windows, macOS or Linux machines over RDP, SSH or VNC. Confirm each item in writing so that access and approvals are not discovered as blockers during the build.

Can our own team set up authentik and Guacamole SSO without a partner?

Yes, if your team has people comfortable with OpenID Connect, reverse proxies, PostgreSQL and Linux service management. The Apache Guacamole guide on the authentik integrations catalog covers the OAuth2 and OpenID Connect configuration, and the Guacamole manual documents its extensions and architecture. The work that most often takes longer for internal teams is testing failure paths, such as a lockout when the identity provider is unavailable, and documenting the setup so it survives staff changes. A partner is useful when you want that verification, operational runbooks and a supported upgrade path handled as a fixed scope.

Does the RAC provider replace a separate Guacamole deployment?

It can replace it for some use cases, but the decision depends on your requirements. authentik's RAC provider gives browser access to remote Windows, macOS and Linux machines over RDP, SSH and VNC through a RAC outpost, all managed inside authentik. Guacamole is a clientless gateway with its own web application, guacd daemon, database options, session recording player and a wider set of authentication extensions. Compare the protocols you need, whether you require Guacamole's session recording, how you handle connection rules per user, and which team will operate each platform. Confirm the RAC provider's current capabilities against the authentik documentation before you decide.

Is authentik free to use for this integration?

The Open Source edition of authentik is released under the MIT license, according to the license file in its GitHub repository, and most of the code falls under that license. Code in the authentik/enterprise/ directory is covered by a separate enterprise license defined in that directory, and the pricing page lists features such as mTLS client certificate authentication, password history and enhanced audit logging as Enterprise-only. Check which edition and features your design needs before the build. Apache Guacamole itself is released under the Apache License, Version 2.0, so review that license alongside authentik's terms.

What breaks most often after a Guacamole SSO setup goes live?

The common failures involve redirect URIs that do not match the Guacamole hostname, certificate trust errors in the browser or on the Guacamole server, and group claims that do not map to the Guacamole permissions you intended. Upgrades to authentik can also change behavior, and the project's security policy lists supported versions that receive fixes, so plan a test environment for each upgrade. Keep a local administrator path in Guacamole for recovery and test it before go-live. Operational checks should cover logins, group mapping and session connectivity to the target machines.

How DeployOpen scopes and delivers authentik and Guacamole SSO

DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside your own infrastructure, so authentik and Guacamole run in your cloud accounts, data centers or air-gapped network. Engagements are fixed-scope, with the scope, deliverables and timelines agreed in writing before work starts.

How we scope

  • Confirm which Guacamole deployment exists or is planned, and whether it runs natively or in Docker.
  • Record the authentik version, deployment method and PostgreSQL arrangement that the integration will use.
  • Agree in writing whether the scope covers OIDC sign-in only, the authentik RAC provider, or a replacement decision.

How we build

  • Configure the authentik OAuth2/OpenID Connect provider and application for Guacamole, including redirect URIs and group claims.
  • Map authentik groups to Guacamole user and connection permissions, and test each role against real connections.
  • Test the sign-in path, a local administrator fallback, and the RAC outpost connections where that option is in scope.

How we hand over

  • Document the client settings, claim mappings, redirect URIs and secrets locations so your team can rotate them.
  • Provide a runbook for adding users, changing group access and recovering when the identity provider is unavailable.
  • Walk your operators through the test results and the decisions recorded during scoping.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Plan authentik and Guacamole version changes against their release notes before you upgrade either component.
  • Ask any support provider to confirm response terms in writing, since these are set per agreement.

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.