FreeIPA authentication with Entra ID, Google, Okta or Keycloak as external IdP

Let FreeIPA users obtain Kerberos tickets by signing in at an external OAuth 2.0 identity provider, either through the device flow at the console or SSH, or through a local Keycloak for providers without that flow.

On this page

How FreeIPA authentication with Entra ID, Google, Okta or Keycloak as external IdP works

Many organizations already sign users in to a corporate identity provider, and the FreeIPA estate beside it still asks for a separate password at the console or over SSH. FreeIPA can accept an external OAuth 2.0 identity provider for this purpose through the device authorization flow, and providers that lack that flow can be chained through a local Keycloak. In the supported method, the user runs a Kerberos login on an enrolled machine, sees a short code and a verification URL printed in the terminal, completes sign-in at the external provider in a browser on any device, and then receives a Kerberos ticket on the host. The user never types a FreeIPA password on the machine itself.

The approach extends an existing mechanism rather than introducing a new one. FreeIPA already supports two-factor authentication through the Kerberos otp pre-authentication mechanism, which can proxy OTP checks to an existing RADIUS server. The external IdP support replaces that RADIUS back end with an OAuth 2.0 authorization server, so the Kerberos side, SSSD on the client and the KDC logic stay the same. Confirm the exact client-side options and pre-authentication configuration with the FreeIPA workshop on external identity providers, since the setup depends on the FreeIPA release in your estate and on how your console and SSH paths are configured.

Plan the provider question before the build starts. The workshop lists Microsoft Identity Platform (including Azure AD), Google, GitHub, Keycloak (including Red Hat build of Keycloak) and Okta as providers that support the device authorization grant. Any corporate IdP outside that list needs a decision: either a local Keycloak registered as an OAuth 2.0 client with the remote provider and registered with IPA, or a different authentication path. The local Keycloak then becomes a production identity service that needs its own database, high availability and patching, so its operating cost and ownership belong in the plan from the start. Ask each provider's team whether device authorization is enabled for your tenant or realm before you commit to a design.

What you need before enabling external IdP login

External IdP login for FreeIPA depends on three things lining up: a provider that supports the device authorization grant, an OAuth 2.0 client registered with that provider, and a Kerberos environment that works on every client. Confirm each item below before you change the IPA server configuration.

Supported providers from the workshop

The FreeIPA workshop lists the Microsoft Identity Platform (including Azure AD), Google, GitHub, Keycloak (including Red Hat SSO) and Okta as known public providers that support the device authorization grant. Check that the provider and tenant you plan to use are on this list, and confirm the exact provider versions and endpoints against the workshop and your own environment before you commit to a design. A provider missing from the list may still work, but it needs a different route.

OAuth 2.0 client at the provider

FreeIPA needs an OAuth 2.0 client registered with the external provider, with the device authorization grant enabled for that client. Ask who in your organization can create that registration, which tenant or realm it belongs to, and which scopes and claims it will return. Record the client identifier and the handling of its secret, because the IPA server configuration depends on both.

SSSD on enrolled clients

Users sign in on Linux hosts through SSSD, so every client that will accept external IdP logins must be enrolled in FreeIPA and run a current SSSD. Inventory your hosts and their distributions, and confirm that the SSSD version on each one supports the external provider flow described in the workshop. Hosts that are not enrolled cannot use this path, and a mixed fleet needs a test plan for each distribution.

Time synchronization for Kerberos

Kerberos rejects tickets when clocks drift beyond the allowed skew, so every IPA server, replica and client must use reliable time sources. FreeIPA can run its own NTP service, but you should confirm which time source each host uses and how it behaves during a provider outage. Check time drift on each host before the first login test, because a clock problem often looks like an authentication failure.

DNS and reachability for the IdP

Clients must resolve the IPA server names and the external provider's endpoints, and must reach them over the network paths your firewall allows. Confirm that the resolv.conf on each client lists at least two DNS servers, as the FreeIPA deployment recommendations advise, and test name resolution from a client, not only from the server. Ask the provider's team which endpoints the device flow calls, so your egress rules match them.

IPA server version and release notes

Confirm the FreeIPA server version in your environment and read the release notes for that version before you enable external IdP support, because the authentication behavior depends on the server release. The FreeIPA 4.13.4 notes describe authentication hardening in the API, so check whether your planned version includes it. Plan a test server that matches production, and confirm the exact versions with the workshop and your own environment.

Configure device-flow login step by step

This sequence takes a test host from no external sign-in to a working console and SSH login where users authenticate at an external OAuth 2.0 provider and receive a Kerberos ticket from FreeIPA. Each step ends with a check you can run before moving on.

  1. Confirm the provider supports device authorization

    Before any configuration, confirm that your identity provider supports the device authorization grant that FreeIPA uses for console and SSH sign-in. The FreeIPA workshop lists Microsoft Identity Platform (including Azure AD), Google, GitHub, Keycloak (including Red Hat SSO) and Okta as known providers with this support. Check the current provider documentation and your tenant settings, because support depends on the provider and its configuration. If the provider does not support the grant, plan the chained path through a local Keycloak instead. Done when you have written confirmation from the provider documentation that the device grant is available for your tenant or realm.

  2. Register the OAuth 2.0 client and record its settings

    In the external provider, create an OAuth 2.0 client for FreeIPA with the device authorization grant enabled. Record the client identifier, the client secret if the provider issues one, the issuer or discovery URL, and the scopes the provider requires. Restrict the client to the users or groups that should sign in through FreeIPA. Store the secret in your secrets system, not in a shell history or ticket. Done when you can retrieve the provider's discovery document from the test host and the device authorization endpoint is listed in it.

  3. Register the external identity provider with IPA

    On an IPA server with an administrator Kerberos ticket, register the provider in FreeIPA using the client settings you recorded, following the external IdP procedure in the FreeIPA workshop for your IPA version. Confirm the exact command syntax and option names against the documentation for the release you run, since this area changes between versions. Associate the provider with the users who will authenticate through it. Done when the provider object appears in the IPA configuration with the expected issuer and client identifier, and an administrator can list it without errors.

  4. Prepare the test host and SSSD

    On a single enrolled test client, confirm that the host resolves the IPA server and the provider's endpoints, that time synchronization is correct, and that SSSD is running with the domain configured. Keep the test host separate from production and use a test user. Check that DNS resolution works for both the IPA realm and the provider host, because Kerberos is sensitive to name and clock problems. Review /var/log/sssd/ for a clean start with no errors about the domain or provider. Done when sssctl domain-list shows the domain online and the SSSD logs show no startup errors.

  5. Enable the user for the external method

    Assign the test user to the external authentication method in FreeIPA so that the device flow is used for that account rather than a password. Confirm that the account is active, that its IPA identity matches the identifier the external provider returns, and that the user's group membership allows login to the test host through HBAC rules. Do not remove password or existing OTP paths from other users during the test. Done when the test user's entry shows the external IdP association and an administrator can see the user as active.

  6. Test console login with the device code

    Log in on the test host at the console, using the test user's name. Expect a prompt that shows a verification URL and a short user code. Open the URL on a separate device, enter the code, and sign in at the provider as the test user. Return to the console and confirm the login completes. Run klist and confirm that a valid Kerberos ticket-granting ticket for the IPA realm is listed with a future expiry time. If the device code prompt does not appear, check the SSSD domain log for the provider call before changing anything else.

  7. Test SSH login and review the SSSD log

    From a second machine, open an SSH session to the test host as the same user and complete the same device flow. Confirm the session opens, then run klist in that session to verify the ticket. Review the SSSD logs for the authentication attempts and confirm they contain no unexpected errors or repeated retries. Record the provider, the IPA version, the SSSD version and the test results so the setup can be repeated or audited. Done when both console and SSH logins succeed, the tickets are valid, and the logs are clean for both attempts.

Direct device flow or Keycloak chaining for each provider

The FreeIPA workshop lists Microsoft Identity Platform (including Azure AD), Google, GitHub, Keycloak (including Red Hat SSO) and Okta as known public identity providers that support the device authorization grant. For these providers, FreeIPA can start the device flow directly against the remote provider, so the user approves the sign-in in a browser on another device while the console or SSH session waits for the result. No additional service sits between FreeIPA and the provider.

  • Fewest moving parts: The trust path runs from IPA to the provider only, so there is one token exchange to monitor.
  • Provider registration: Your team registers FreeIPA's client with the provider and controls which tenant, domain or organization may sign in.
  • Version confirmation: Device flow support depends on how each provider is configured, so confirm the grant is enabled for your tenant before testing.
  • Account mapping: Decide how the external identity maps to an IPA user, including how a new or disabled external account is handled.
  • Single provider testing: Each provider needs its own sign-in, expiry and failure tests.

Before relying on this path, confirm with the provider's current documentation and your own tenant settings that device flow is available for your account type.

When a local Keycloak chain is the right design

Chain through a local Keycloak only when the external provider cannot perform the device authorization grant that FreeIPA uses. The FreeIPA workshop names Microsoft Identity Platform (including Azure AD), Google, GitHub, Keycloak (including Red Hat SSO) and Okta as providers that support that grant, so for those, FreeIPA can talk to the provider directly and the extra component is unnecessary. For any other provider, the local Keycloak sits between the two systems: it is registered as an OAuth 2.0 client with the remote provider, and it is registered with IPA as the authorization server that issues the tokens FreeIPA checks. Confirm the grant support of your specific provider and tenant configuration before choosing this design, because the list above describes the workshop's known providers, not every product that uses the same name.

The chain adds a dependency. A FreeIPA login that goes through the external provider now needs the local Keycloak, its database and the remote provider to be reachable at the same time, so Keycloak becomes part of the authentication path for every user who signs in that way. Keycloak's production guidance requires a supported database (the list includes PostgreSQL 14 to 18, MariaDB, MySQL, Microsoft SQL Server, Oracle Database and Azure SQL, while the dev-file database is for development only) and one of its documented high availability designs, both of which need a synchronously replicated database. Ask your team to size the deployment for peak login volume and to review the topology with the Keycloak documentation before rollout. Also decide whether password-based Kerberos logins will remain available during a Keycloak outage, because that is a policy decision rather than a default.

Plan the chain's upgrades separately from FreeIPA's. The current Keycloak release is 26.8.1, published October 13, 2026. Since Keycloak 26.0 the project ships four minor releases a year, and breaking changes in a minor release are opt-in, so a version change does not automatically alter behavior, but you still need to read each release's changes and enable new settings deliberately. Schedule Keycloak updates in a test realm that mirrors the FreeIPA registration and the remote provider client, verify that a device login still completes, and record the rollback path. If you run the Keycloak Operator, the project strongly recommends manual approval mode for operator updates, which keeps upgrades under your control.

How external IdP identities map to FreeIPA users

This table compares what each identity element comes from: the external provider's claim, the FreeIPA login and Kerberos principal, and the group and HBAC data that stays in IPA. Read it as a design checklist, then confirm each claim name and mapping option in the workshop and the FreeIPA release you run, because those details are not settled by this summary. The main takeaway is that FreeIPA keeps authorization, so a successful external sign-in does not by itself grant access.

Identity elementWhere it comes fromWhat to confirm before build
Login name (uid)Mapped from an external claim such as the user principal name or email prefixWhich claim is used, how domain suffixes are stripped, and whether the mapping is configurable in your release
Kerberos principalDerived from the FreeIPA login and the IPA realm, not issued by the external IdPThat the principal matches the IPA realm and that existing Kerberos principals are not duplicated
Group membershipStays in FreeIPA as internal groups and nested groupsThat external group claims are not used to grant groups, and who maintains group membership
HBAC and sudo rulesStay in FreeIPA and apply after authentication succeedsThat access tests still run on the IPA host policy for each enrolled machine
Existing IPA userMatched to the external identity by the mapped loginHow the first sign-in links to the existing account and what happens on a name collision
User absent from IPANo FreeIPA account exists for the external identityWhether sign-in is refused, whether accounts are created automatically, and who approves any creation
Disabled or expired IPA userAccount state held in FreeIPAThat a disabled IPA account blocks Kerberos tickets even when the external provider still accepts the user
Attribute changes at the IdPRename or email change in the external providerHow a changed claim maps to an existing IPA login and whether a manual step is needed

Security controls for external IdP authentication

An external identity provider becomes part of the Kerberos login path, so its tokens and consent settings decide who gets a ticket from FreeIPA. The cards below cover the controls that keep that chain narrow, from client credentials and redirect rules to the Keycloak chain, transport security, FreeIPA patch level and login auditing.

Client secret storage

The OAuth client registered for FreeIPA or for a local Keycloak holds a secret that can request tokens on behalf of the realm. Store it in a secrets manager or a root-readable file with restricted ownership, never in shell history, Ansible inventory in plain text or a container image layer. Confirm how the chosen provider handles secret rotation and whether a certificate-based client credential is available as an alternative.

Redirect URIs and device flow scope

Limit redirect URIs and device authorization to the tenants, domains or Keycloak realms your organization actually uses. Broad multi-tenant app registrations let accounts from other organizations sign in to your Kerberos realm. Ask each provider whether device authorization can be restricted to specific tenants or domains, and test that an account from an unapproved tenant is refused.

Least-privilege OAuth scopes

Request only the scopes needed to confirm identity, such as the OpenID Connect profile details FreeIPA uses to map the user to a principal. Avoid mail, directory or drive scopes that the login flow does not need. Review consent grants periodically, because a broad grant made for one purpose stays in effect for every later sign-in.

Protecting the Keycloak admin console

A local Keycloak used for chaining holds the client registrations that map external identities into FreeIPA. Restrict the admin console to a management network, require multi-factor authentication for administrators and keep admin accounts separate from user realms. Review the Keycloak production configuration guidance before exposing any endpoint to users.

Securing the Keycloak database

Keycloak stores realm configuration, client secrets and session data in its database, so a compromised database exposes the chain's trust material. Restrict network access to the database host, use encrypted connections, and include the database in backup encryption and access reviews. The Keycloak database guide lists the supported production engines, and PostgreSQL is one option to confirm for your environment.

TLS on every hop

The login chain crosses the user's browser, the external provider, Keycloak, the KDC and the SSSD client. Use valid TLS certificates on each endpoint, verify certificate chains on SSSD and Keycloak, and avoid disabling verification to make a test pass. Confirm that the internal CA used for Keycloak is trusted by every enrolled client before rollout.

Keeping FreeIPA patched

FreeIPA 4.13.4, dated July 9, 2026, fixed two CVEs, including LDAP access control flaws that could let unauthenticated clients obtain credentials, and hardened authentication checks across the API. Track the release notes for each FreeIPA server in the topology, apply fixes to all replicas, and confirm that the version supports the authentication path you configure before enabling external IdP login.

Auditing external logins

Record which external identity signed in, which principal FreeIPA issued, from which client and at what time, in both the provider logs and the Keycloak event log. Forward these events to your central log store and set alerts for sign-ins from unexpected tenants or repeated failed device codes. Confirm the retention period with your compliance owner, because the provider and Keycloak defaults may not meet it.

Common failures in device-flow and Keycloak-chained logins

This table lists the failures most likely to block an external identity provider login into FreeIPA, with the cause, the fix and the log to check for each. Work down the rows in order when a login fails, because clock, DNS and SSSD problems often look like provider problems.

FailureLikely cause and fixWhat to check in logs
Clock skew breaks KerberosKerberos rejects tickets when client, KDC and provider clocks drift apart. Confirm NTP runs on the IPA servers and the client, then resync before retrying.Client and KDC time in journal output, sssd domain logs, and kinit errors mentioning clock skew
DNS misconfigurationThe client cannot resolve the IPA servers, the Kerberos realm or the SRV records. Confirm resolv.conf lists the IPA DNS servers and that the realm's SRV records resolve from the client.Output of dig for the _kerberos and _kerberos-master SRV records, and resolver errors in sssd logs
Provider does not grant device flow for the clientThe external provider's app registration does not allow the device authorization grant, or the client type is wrong. Ask the provider admin to enable the grant on the registered client, or plan the Keycloak chain instead.Provider sign-in audit log, error responses from the device authorization endpoint, and the client registration settings
User missing from IPA or not enabled for the methodThe external identity is not linked to an IPA user, the account is disabled, or the user is not allowed the external method. Confirm the user exists, is active and has the external IdP mapping set.IPA server logs for the user lookup, and the account status shown by the IPA user view
SSSD not configured for the external pathThe SSSD domain lacks the settings for the OAuth 2.0 path, or SSSD was not restarted after a change. Compare the domain section against the configuration required by the chosen method and restart SSSD.sssd domain log for the authentication request, and journal entries from the sssd service at startup
Keycloak unreachable or misconfigured as OAuth clientIn the chained design, the local Keycloak cannot reach the remote provider, or its client secret, redirect URI or issuer URL does not match. Check the issuer, client ID and secret, then test reachability from the IPA side.Keycloak event log for failed logins, server log for OIDC errors, and TLS errors on outbound calls
Token expiry during loginThe user waits too long at the verification page, so the device code or token expires before the exchange completes. Retry promptly, and check whether the lifetimes configured at the provider or Keycloak are too short for the login path.Error text stating the device code or token expired, and timestamps comparing the request start and the failed exchange
Redirect or consent errorsThe redirect URI registered with the provider or Keycloak does not match the one used, or a required consent or admin approval for the requested scopes is missing. Compare the registered URIs and scopes with the client configuration and ask an admin to grant consent.Provider error codes such as redirect mismatch or consent required, and the Keycloak log entry for the authorization request

How to test external IdP login before users depend on it

Treat external IdP login as a feature that must pass a written test plan before any pilot user depends on it. Start with a small set of enrolled test hosts: one Linux machine per distribution and SSSD configuration you intend to support, joined to FreeIPA with the same client settings your production hosts will use. Pair them with a dedicated pilot user group in FreeIPA whose members are real people who have agreed to test. Confirm that each test host can obtain a Kerberos ticket through the device authorization flow at the console and over SSH, and that the resulting ticket and the local account mapping match what your access policy expects. Record the exact FreeIPA, SSSD, and identity provider versions used in each run.

Then test the cases that usually fail in production. Check an expired FreeIPA account and a disabled account, and confirm that neither can complete an external sign-in or receive a new ticket. Check a user whose external identity no longer matches the FreeIPA entry. Simulate an identity provider outage by blocking the provider endpoints from a test host, and document what users see, how long the failure takes to surface, and whether local password or other fallback paths behave as your policy requires. Confirm the fallback path for administrators before the pilot begins: a named break-glass account, stored credentials, and a tested procedure that works while the external provider is unreachable. Confirm the exact fallback mechanism with your FreeIPA and identity provider documentation, since it depends on your configuration.

Write each test as a row with its preconditions, steps, expected result, observed result, tester, and date, and keep the file with your change records as acceptance evidence. Sign-off should come from the security owner as well as the platform team. Rerun the full plan after every FreeIPA upgrade and every Keycloak upgrade, including Keycloak used as a chained provider, because either component can change the device flow, token handling, or SSSD behavior. Also rerun it after changes to identity provider client registrations, redirect settings, or certificates. A plan that was passed once only proves the configuration that existed on that day.

Questions buyers ask before enabling external IdP login

Can our team set up external IdP login for FreeIPA without a partner?

Yes, if you already run FreeIPA and have engineers comfortable with Kerberos, SSSD and your identity provider's app registration process. The work is configuration rather than new software, but it touches authentication for every enrolled host, so a mistake affects logins broadly. Before deciding, check whether your team has tested a device authorization flow end to end in a non-production realm. The FreeIPA workshop on external IdP support describes the mechanism, which is a useful first read for your engineers.

What drives the effort of an external IdP login project?

Effort rises with the number of identity providers, whether any of them need a Keycloak chain, how many hosts are enrolled, and whether login covers only the console or also SSH. Providers that support the device authorization grant are simpler to register. Providers that do not need a locally deployed Keycloak registered as an OAuth 2.0 client with the remote provider and then with IPA, which adds a component to build, patch and monitor. Host count matters because SSSD configuration and testing must reach every host class you plan to use.

How long does external IdP login take to set up?

Duration depends on the number of providers, whether Keycloak chaining is needed, the state of your existing FreeIPA and SSSD versions, and how many change windows your environment allows for testing. No duration is stated here because none has been researched for this work. Ask any provider for a written schedule that lists the test environment, the number of hosts in each pilot group and the approvals each step requires, then compare that against your own change calendar.

What do we need from the identity provider admin and the FreeIPA admin?

The identity provider admin must register an application for FreeIPA, confirm that the provider supports the device authorization grant, and approve the scopes and redirect or client settings. The FreeIPA admin must configure the external IdP entry, confirm which users may use it, and check SSSD on test hosts. When Keycloak chaining is used, someone must also own the local Keycloak realm, its client registrations and its patching. Agree these responsibilities in writing before work starts so neither side waits on the other.

Can external IdP login be bought as a fixed-scope engagement?

Yes. Most DeployOpen engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts. For this topic, a written scope should name the providers in scope, whether Keycloak chaining is included, the host groups and whether SSH as well as console login is covered, the test plan, and the handover documents. Ask for the exclusions too, such as provider-side policy changes or work on hosts outside the agreed groups. A quote follows from that written scope, and DeployOpen does not publish a price list.

What does a quote for this work need to include?

Ask for a quote that separates one-time work from recurring work and states who is paid for what. The one-time items usually include design, provider registration, FreeIPA and SSSD configuration, a pilot, rollout and documentation. Recurring items include a Keycloak component if chaining is used, provider secret or certificate rotation, FreeIPA and SSSD upgrades and testing after each change. Also ask how the quote treats failed pilots, additional providers added later and hosts that need extra SSSD work. Without these terms, the total will be hard to compare.

What recurring work follows after external IdP login goes live?

Plan for ongoing work on the identity provider registrations, the FreeIPA and SSSD versions on enrolled hosts, and any Keycloak chain you deploy. Client secrets and certificates expire and need rotation. FreeIPA security releases and SSSD updates must be tested against your external IdP configuration before rollout. If you run Keycloak, its release cadence and database schema migrations also need a maintenance plan. You can keep this in-house or move it under a retainer, which covers ongoing support, upgrades and continuous testing.

What are the main security risks of letting users sign in through an external IdP?

The main risks are that a misconfigured provider or client registration lets the wrong users obtain Kerberos tickets, that a compromised provider account affects FreeIPA logins, and that an unmaintained Keycloak chain becomes a weak link. Limit which users may use each provider, keep HBAC rules in force on every host, and review who can change the provider entries in FreeIPA. Confirm with your security team how the external provider's own MFA and conditional access policies interact with your Kerberos ticket lifetimes.

How DeployOpen scopes and delivers external IdP integration

DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside your own infrastructure, including FreeIPA. For external identity provider sign-in, we start from your identity provider inventory, your enrolled hosts and your access policy, then agree the work in a written, fixed-scope plan before any configuration begins.

How we scope

  • Inventory which identity providers your users sign in with and whether each one supports the device authorization grant
  • Confirm the FreeIPA server version, SSSD version and enrolled distributions that the integration must cover
  • Agree in writing which login paths are in scope, such as console, SSH or both, and which need a Keycloak chain
  • Engagements are fixed-scope, with deliverables and timelines agreed before work starts, and ongoing support available as a retainer

How we build

  • Prepare the FreeIPA and SSSD prerequisites, including DNS, time synchronization and client configuration, on your test topology first
  • Register the OAuth 2.0 client with the external provider and configure the FreeIPA side to match the agreed identity mapping
  • Where a provider lacks device authorization support, deploy and configure a local Keycloak chain as specified in the scope
  • Test sign-in, ticket lifetimes, failure handling and account lockout behavior against documented acceptance criteria

How we hand over

  • Deliver configuration records, runbooks and a verification checklist that your own engineers can repeat
  • Document the trust boundaries, which system issues tickets, and what happens when the external provider is unavailable
  • Walk through the build with your operations and security staff and record the decisions made during implementation
  • Provide an upgrade and rollback procedure covering FreeIPA, SSSD and any Keycloak component in the chain

How we support

  • Offer ongoing support, upgrades and continuous testing as retainers, scoped separately from the initial build
  • Review provider changes, FreeIPA release notes and Keycloak updates that could affect the integration before you apply them
  • Re-run the agreed verification suite after upgrades, certificate renewals or changes to the identity provider configuration
  • Ask any partner, including DeployOpen, to confirm current vendor support status and certification claims for your environment

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.