authentik Kerberos and SPNEGO single sign-on

Set up transparent browser sign-in for domain-joined users with the authentik Kerberos source, sync accounts from your KDC, and keep the reverse proxy from breaking negotiation.

On this page

How authentik Kerberos and SPNEGO single sign-on works

If you run a Kerberos realm or Active Directory and want domain-joined users to reach authentik-protected applications without a password prompt, authentik's Kerberos source can fit, provided your browsers, DNS and reverse proxy can carry the negotiation. The source is designed for transparent browser login: when a user on a joined machine opens an application, the browser uses SPNEGO (the Negotiation mechanism) to present a Kerberos service ticket to authentik, and authentik maps the authenticated principal to a local user. Users who are not on a domain-joined machine, or whose browser is not configured to negotiate, still need a fallback login path, so plan for both.

The Kerberos source has a second role: it reads users from the KDC using a keytab, which is a file holding the service principal's long-term keys. That keytab, the service principal name and the realm settings together determine which accounts can sign in and how their names map to authentik usernames. Treat the keytab as a secret with restricted file permissions and a rotation plan, because a leaked keytab lets an attacker impersonate the service. Exact source fields, sync options and the browser policy that allows negotiation must be confirmed against the authentik sources documentation for the version you run. The supported versions receiving security fixes are 2026.5.x and 2026.8.x, so confirm your release sits in that line before you design around the source's behavior.

Before you build, confirm three things with your Kerberos or Active Directory administrators: the realm and KDC addresses reachable from the authentik server, the service principal and keytab procedure your directory policy allows, and whether your reverse proxy forwards the Authorization header and handles the negotiation challenge correctly. Proxy caching is a known cause of broken negotiation, since a cached 401 or response can stop the browser from completing the exchange, so the reverse proxy configuration needs its own test. Expect the verification to include a domain-joined test account, a non-domain account that must fall back cleanly, and a check of the sync results against a known set of users.

What you need before enabling Kerberos sign-in

Kerberos sign-in in authentik depends on several parts working together: a supported release, a healthy deployment, a KDC or Active Directory realm, a keytab, and clean name resolution and clocks. Gaps in any one of these tend to show up as negotiation failures in the browser, so confirm each before changing the login flow.

A supported authentik version

Run a release that still receives security fixes. The authentik security policy lists 2026.5.x and 2026.8.x as supported, so plan any upgrade to one of those lines before the Kerberos source is built. Check the current patch level against the GitHub releases page, since the project announces security releases at least 24 hours in advance and your change window should allow for that.

A healthy authentik deployment

Kerberos negotiation runs through the server container, so the core service, the worker container and PostgreSQL must all be running and reachable. Confirm the worker processes background tasks such as directory sync, and that PostgreSQL has connection headroom for your user count. Review the architecture page to map which container handles which function before you troubleshoot.

A KDC or Active Directory realm

Decide which Kerberos realm authentik will trust, whether an MIT KDC, FreeIPA or Active Directory. Create a service principal for the HTTP service name that matches the hostname users type in their browsers. Confirm the exact principal naming pattern with the authentik sources documentation, because a mismatch between the principal and the browser URL is a common reason negotiation fails silently.

A keytab created and protected

The keytab holds the long-term secret for the HTTP principal, so generate it on the KDC, copy it to authentik through a controlled channel, and restrict read access to the service account that runs the containers. Confirm the required keytab format, encryption types and file location with the authentik sources documentation. Record who holds copies and plan rotation with the KDC key version.

DNS and time synchronization

Kerberos resolves service principals by name and rejects tickets when clocks drift beyond the realm tolerance. Make sure the authentik hostname resolves forward and reverse to the address users reach, and that the authentik host, the KDC and the browser clients all sync to the same time sources. Test both before blaming authentik for a ticket error.

Browser policy on domain-joined machines

Transparent sign-in only works when the browser sends the Negotiate header. Confirm that the authentik URL falls within the intranet or trusted sites zone on managed Windows clients, and that the browser's delegation and authentication settings allow it. Test with a domain user on a machine that is joined to the realm, and keep a documented fallback to password login for unmanaged devices.

Configuration sequence for the Kerberos source

This sequence takes a working authentik deployment from a confirmed version to a Kerberos source that signs domain-joined users into browser applications without a password prompt. Each step closes with a check you can run before moving on.

  1. Confirm the authentik version and deployment

    Confirm that your authentik version is one that receives security fixes, which the project's security policy lists as 2026.5.x and 2026.8.x at the time of writing, and that the instance is reachable over HTTPS at the hostname your users will browse to. Check the deployment against the Docker Compose or Kubernetes installation guide, since the server and worker containers and PostgreSQL must all be healthy before you change identity settings. Ask your team to confirm the exact version against the releases page before you start. Done when the administration interface loads over HTTPS and the server, worker and database report healthy.

  2. Create the service principal and keytab on the KDC

    On the Kerberos Key Distribution Center, your directory or Active Directory administrator creates a service principal for the HTTP service under the hostname users will reach, then exports its key to a keytab file. Restrict read access to the keytab to the authentik service account and keep a copy in your secrets store, because a leaked keytab allows impersonation of the service. Record the principal name and the keytab location exactly as they will appear in the source settings. Done when the principal lists in the KDC and the keytab file can be read by the authentik process but not by other local users.

  3. Add the Kerberos source in authentik

    In the authentik administration interface, an administrator creates a Kerberos source and enters the realm, the service principal and the keytab details, plus the KDC and DNS settings your environment needs. Use the sources documentation for the exact field names and options, because they change between releases and this page does not reproduce them. Decide now whether the source will also sync users from the KDC, since that determines which user attributes authentik receives. Done when the source saves without validation errors and appears in the source list as enabled.

  4. Bind the source to the login flow

    Add the Kerberos source to the authentication flow that users pass through, and set its position so that negotiation is attempted before the password form is shown. Leave the password fallback enabled while you test, so that a failed negotiation does not lock out administrators. Confirm that the flow used by your applications is the same flow you edited. Done when a test request to a protected application starts the flow and the flow lists the Kerberos source as a stage option.

  5. Configure browser trust and negotiation on domain-joined machines

    On a pilot set of domain-joined Windows workstations, your endpoint team adds the authentik hostname to the browser's trusted or intranet zones so the browser will offer Kerberos tokens to it, and checks that the browser's negotiation settings allow SPNEGO for that site. Confirm that the workstations obtain a ticket for the service principal from the KDC before you test in the browser. Compare the browser configuration with the browser vendor's enterprise policy documentation. Done when a pilot user's workstation holds a valid ticket for the service principal and the browser is configured to negotiate with the authentik hostname.

  6. Test with a clean browser session

    Sign out of authentik, close all browser windows, and sign in from a pilot workstation with a fresh session. Expect the browser to complete negotiation without a password prompt and authentik to create or match a user from the KDC. Then check the authentik event log for an entry showing that the Kerberos source accepted the ticket, and confirm the user record carries the expected username and groups. Repeat the test from an account that is not a domain user to confirm the fallback login still works. Done when the pilot user reaches the application without entering a password and the log shows an accepted ticket.

  7. Check for reverse proxy caching before rollout

    Place the deployment behind your reverse proxy and repeat the clean-session test, since a proxy that caches the authentication response or strips the Authorization header can break negotiation for some users and not others. Review the proxy configuration with the network team and confirm that it passes the negotiation headers through to authentik unchanged. Ask your vendor or the authentik documentation which headers and cache rules apply to your proxy product. Done when repeated clean-session tests through the proxy succeed for several pilot users and the proxy logs show the negotiation headers reaching authentik.

How Kerberos principals and directory attributes map to authentik users

This table compares each identity element, from the KDC principal to group membership, with the authentik user field it feeds and who sets its value. Read it as a checklist: the first column names the element, and the remaining cells show where it lands in authentik and what you must confirm before go-live. The main takeaway is that the username and realm handling decide whether SPNEGO logins find the right account.

ElementWhere it lands in authentikWhat to confirm before go-live
Kerberos principal (user@REALM)Matched against the authentik username through the source's user matching settingsConfirm the exact principal format the source expects and whether the realm is stripped before matching
Realm and domain suffixDetermines whether user@EXAMPLE.COM and user resolve to the same accountConfirm the realm casing and whether a suffix is appended or removed in the source configuration
Service principal and keytabUsed by the source to decrypt SPNEGO tokens sent by the browserConfirm the service principal name, keytab file path and key version with the KDC administrator
Email attributeCopied to the authentik user email field through a property mappingConfirm the directory attribute name in your schema, typically mail in Active Directory or a FreeIPA equivalent
Display name attributeCopied to the authentik user name field through a property mappingConfirm which attribute holds the full name and whether given and family names are split in your directory
Directory group membershipMapped to authentik groups, which applications use for access decisionsConfirm whether nested groups are expanded, and whether group names in the directory match the names your applications expect
Account state (disabled, locked)Determines whether the authentik user can complete a Kerberos loginConfirm which directory attribute signals a disabled account and how often the source re-evaluates it

Why user sync from the KDC is a separate step from login

User sync from the KDC and browser negotiation are two separate operations, and they fail in different ways. Negotiation happens when a browser presents a Kerberos service ticket to authentik during sign-in, so it depends on the client being domain-joined, the browser trusting the right hosts, and the service principal being correct. Sync is a background read of accounts from the KDC, which depends on a credential that can query the directory. A team can have working transparent login while sync is stale, or the reverse, so each needs its own check before go-live. Confirm in the authentik Kerberos source documentation exactly which account attributes are read, how often sync runs, and whether it can create, update or disable users.

The keytab is the sensitive part of the sync path. A keytab file holds long-term secret keys for a principal, so anyone who reads it can obtain tickets as that principal. Treat it like a private key: restrict read access to the service account that runs authentik, keep it out of version control and general backups without equivalent protection, and record who holds copies. Plan rotation before the first deployment. Changing the principal's keys in the KDC invalidates older keytab entries, so the team needs a documented sequence for generating a new keytab, deploying it, confirming sync, and retiring the old file. Ask the KDC administrator which encryption types the realm issues, because the keytab must match them.

Account changes reach authentik only through the sync cycle, not through login. A disabled or locked account in the KDC may still be able to obtain a ticket until its ticket lifetime ends, and authentik will not reflect the change until the next sync. Before go-live, decide what happens to accounts that disappear from the KDC or are disabled there: whether authentik deactivates them, leaves them active, or flags them for review. Ask who owns departures, how quickly HR or the identity team removes access in the KDC, and whether authentik sessions and other application sessions need to be revoked. Test these cases with a disabled test principal and record the result.

Reverse proxy setups that keep negotiation working

In the simplest layout, one reverse proxy terminates TLS for the authentik hostname and forwards requests to the authentik server. Kerberos negotiation depends on the browser receiving an HTTP 401 with a WWW-Authenticate: Negotiate challenge, then sending back an Authorization: Negotiate header carrying the ticket. The proxy must forward the Authorization header unchanged and must not strip the WWW-Authenticate response header on the way back. Confirm the exact directives for your proxy with the authentik documentation and the proxy vendor's current guidance, since header handling differs between products.

  • Forward the Authorization header: Confirm that the proxy passes the Authorization request header to the upstream without modification.
  • Keep the challenge intact: Check that the 401 response and its WWW-Authenticate header reach the browser, not a proxy-generated error page.
  • Set forwarded headers consistently: Make sure the public host, scheme and client address the proxy sends match what authentik expects, so redirects return to the correct URL.
  • Disable caching on auth paths: Responses from the flow and source endpoints carry per-user state and must not be stored by the proxy.
  • Test with a domain-joined client: Sign in from a machine with a valid Kerberos ticket and confirm the login completes without a password prompt.

Before go-live, check that a second browser without a ticket still reaches the normal login form.

Security controls for Kerberos sign-in

Kerberos sign-in moves trust to a KDC, a keytab and a reverse proxy, so each of those becomes part of your security boundary. The cards below cover the controls that connect them, and the edition and version questions to settle before you rely on them.

Protect and rotate the keytab

The keytab holds long-term secrets that let the service account decrypt Kerberos tickets, so a copy in the wrong place lets someone impersonate users. Store it with restrictive file permissions on the authentik host, limit access to the operators who manage it, and keep it out of backups that are widely readable. Agree a rotation procedure with your KDC team, including how you regenerate the keytab and when old copies are destroyed. Confirm with your KDC administrators how key versions are handled during rotation so sign-in does not fail mid-change.

Least-privilege service account on the KDC

The service principal used by authentik should have only the rights needed to validate and issue service tickets for the SPNEGO endpoint, plus the directory reads needed for user sync. Avoid domain admin or broad delegation, and avoid sharing the account with other services. Review what the account can read and whether it can change passwords or group membership. Ask your directory team to document the account's permissions so the review can be repeated after upgrades.

Restrict which hosts reach the negotiation endpoint

The endpoint that answers SPNEGO negotiation is where a browser presents its Kerberos ticket, so it should be reachable only from the networks where domain-joined clients sit. Limit ingress at the reverse proxy and firewall to known client ranges, and confirm that the proxy passes the authorization header through unchanged. Test from both an internal domain-joined machine and an outside network to confirm the boundary behaves as you intend.

Control who can use local or password fallback

When Kerberos negotiation fails, users fall back to a password form or a local account, and that path bypasses the strength of Kerberos sign-in. Decide which accounts may use fallback, which groups are exempt from it, and whether administrators must always use a second factor. Record that decision in your access policy. Confirm in your authentik edition which flow and policy controls you can apply to the fallback stage before you rely on them.

Audit Kerberos logins

You need to show who signed in, from which host and through which source, and to detect failed negotiation patterns that suggest a misconfigured client or an attack. Forward authentik event logs to your central logging system and set retention to match your policy. Confirm whether enhanced audit logging, which the authentik pricing page lists as an Enterprise-only feature, is required for the events your auditors expect in the edition you plan to run.

Keep authentik on a supported version

Security fixes reach only the versions listed as supported, and the project announces security releases at least 24 hours in advance, so your change process must be able to respond at short notice. Plan a regular upgrade window, read release notes for changes to the Kerberos source and the reverse proxy path, and test negotiation after each upgrade. Confirm the current supported release lines against the security policy before you set your maintenance calendar.

Common failures when Kerberos sign-in breaks

This table pairs each symptom with its likely cause, a first fix, and whether the cause must be confirmed in your environment. Use it to triage a failing SPNEGO login before changing the authentik source, the reverse proxy or the KDC. Causes marked for confirmation depend on your browser policy, network layout and directory data, so verify them on your own hosts.

SymptomLikely causeFirst fix to tryConfirm in your environment
Browser shows repeated password promptsThe browser did not negotiate a Kerberos ticket, often because the authentik host is not in the browser's intranet or trusted site zoneAdd the authentik hostname to the intranet or trusted sites policy and confirm the user holds a valid ticket for the serviceYes: check the browser policy delivered by GPO or MDM and the ticket cache on the client
Login works directly but fails only through the reverse proxyThe proxy strips or does not forward the Authorization header, or caches a 401 response that blocks the negotiation exchangePass the Authorization and WWW-Authenticate headers through and disable caching on the negotiate pathYes: confirm the proxy product, its caching rules and the headers received by authentik
Users missing after sync from the KDCThe keytab principal lacks rights to read the target accounts, or the LDAP search base or scope excludes the usersCheck the service account rights and widen the search base or scope to include the user containerYes: confirm which OUs hold the accounts and what the sync service account can read
Clock skew errors during negotiationThe authentik host, the client and the KDC disagree on time beyond the Kerberos toleranceSynchronize all hosts against the same trusted time source and retestYes: measure the offset on each host and confirm the tolerance set in your KDC policy
Login succeeds but the username does not match the expected accountThe realm suffix or principal format differs from the username format authentik expects, such as user@REALM versus DOMAIN\userAlign the username mapping with the realm and the format used by existing accountsYes: compare the principal name on the keytab with the attribute authentik stores for the user
Keytab rejected or decryption failuresThe keytab was generated for a different service principal, key version or encryption type than the one in useRegenerate the keytab for the exact service principal and confirm the key version numberYes: confirm the principal, key version and encryption types supported by your KDC

What teams ask before enabling authentik Kerberos SSO

How much effort does authentik Kerberos SSO take, and what drives it?

The effort depends on how many applications sit behind the sign-in, how the reverse proxy is laid out, how reachable the KDC is from the authentik network, and how much browser policy rollout the client needs. A single internal web application with one proxy and a test KDC is a small piece of work. Several applications across multiple proxies, plus Group Policy or browser settings pushed to many desktops, add review cycles and testing time. No duration is set here, so ask for a timeline that follows from a written scope that lists each of these factors.

Can an internal team set up Kerberos SSO without outside help?

An internal team with Kerberos, DNS and reverse proxy experience can do the work, and many do. The hard parts are usually outside authentik itself: service principal names, keytab creation with the right encryption types, clock sync, and proxy headers that the browser negotiation depends on. If your team has not run a KDC or changed proxy caching before, plan for a period of testing on non-production hosts. A partner is useful when you want the work scoped, documented and verified against your environment in writing before you commit.

What must the client provide before the work starts?

Expect to supply the following before work begins:

  • KDC administrator access, or a named administrator who can create the service principal and generate the keytab
  • A secure path for keytab handling, including who may hold the file and where it is stored
  • Test accounts on domain-joined machines in each browser and operating system you support
  • Rights to change the reverse proxy configuration and to cache or bypass settings in front of authentik
  • DNS records and certificates for the authentik and application hostnames

Confirm each item in the written scope, since missing access is one of the most common causes of delay.

What does Kerberos SSO cost to run, and what recurs?

Most of the cost is one-time: design, configuration, testing and documentation. Recurring items include keytab rotation when the service account password or key material changes, authentik version upgrades, proxy configuration reviews after upgrades, and monitoring of sync and login failures. Running costs also include the infrastructure hosting authentik and its PostgreSQL database. Ask any partner for a quote that separates one-time work from recurring support, and state whether a support retainer covers rotation and upgrade testing. DeployOpen does not publish prices, so the written scope and quote are the source of figures.

Is a support retainer needed after go-live?

A retainer is optional but useful when the Kerberos path is important to daily access. Negotiation failures often appear after browser updates, proxy changes or keytab changes, and a retainer gives a defined channel for those issues. Without one, your own team must watch authentik release notes and test each upgrade. Ask what the retainer covers, how fast issues are triaged, and whether upgrade testing on your configuration is included. Retainers are available from DeployOpen, and their terms are set in the written scope.

Does authentik Kerberos SSO require an Enterprise license?

The public pricing page lists Google Workspace and Microsoft Entra ID integrations, mTLS, privileged access management, password history and enhanced audit logging as Enterprise-only features. Kerberos SSO is not on that list, and the open-source edition is listed as free, so confirm the current edition boundary with authentik before you design around it. Enterprise pricing is listed per user per month plus a fee for external users, and that figure is set by authentik, not DeployOpen. Check whether your audit or identity governance needs are covered by Enterprise features.

How do authentik releases affect Kerberos SSO over time?

authentik names releases by year and month, and its security policy lists 2026.5.x and 2026.8.x as the supported versions that receive security fixes. The project announces security releases at least 24 hours in advance, so your team needs a process to receive that notice and schedule a window. Each upgrade can change the proxy or authentication behavior that negotiation depends on, so test Kerberos login on a staging instance before production. Confirm the upgrade path for your installed version in the authentik release notes before planning.

How DeployOpen scopes and delivers Kerberos SSO for authentik

DeployOpen plans, builds, documents and supports authentik Kerberos and SPNEGO single sign-on inside your own infrastructure. Each engagement starts with a written scope that names the domain, the KDC, the reverse proxy and the browser population, so the work is defined before any configuration changes.

How we scope

  • Inventory the Kerberos realm, KDC hosts, service principals and the domain-joined client population before design begins.
  • Map which hostnames, reverse proxy paths and browsers will negotiate SPNEGO and which will fall back to password login.
  • Record the keytab handling, service account rights and sync scope in the written scope, with fixed deliverables and timelines agreed in advance.
  • Confirm with your own team which authentik version line you run, since supported versions receive security fixes.

How we build

  • Configure the authentik Kerberos source against your realm, keytab and KDC settings in a non-production environment first.
  • Test SPNEGO negotiation from domain-joined Windows and other supported clients, including the reverse proxy path that passes the Authorization header.
  • Check the reverse proxy caching behavior that can break negotiation and document the cache rules that prevent it.
  • Verify user sync from the KDC, group mapping and the login fallback path before any production cutover.

How we hand over

  • Deliver configuration, keytab handling procedures and the source settings as versioned, reviewable artifacts.
  • Provide a test script that shows a domain user reaching the application without a password prompt and a failure case.
  • Document the reverse proxy rules, caching exclusions and the troubleshooting steps for negotiation failures.
  • Walk your engineers through the runbook so your team can rotate keytabs and change mappings without us.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Plan authentik version upgrades and re-run negotiation tests against each new release in your environment.
  • Review keytab rotation, KDC changes and proxy configuration changes that could affect transparent login.
  • Ask any support provider to confirm response terms and scope in writing before you sign.

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.