Skip to content

Best Kafka tools for teams using Microsoft Entra ID (Azure AD)

Comparisons
Chad Harris·October 3, 2026·15 min read

The best Kafka tool for teams that sign people in through Microsoft Entra ID, formerly Azure AD, is one with documented Entra ID setup, that turns Entra groups or app roles into roles and still finds them for people in more than 150 groups, checks those roles on every action in the UI and the API, records each action against the person Entra ID named, grants production access for a task and lets it expire, and runs as one container beside the cluster, out of the data path. Kpow, Kafbat UI, AKHQ and Conduktor each cover part of that. Scored on the six weighted criteria explained below the rankings, Kpow ranks first with 117 out of 130, ahead of Kafbat UI at 91 and AKHQ at 69; Conduktor, listed last, totals 77.

Tools compared

Kafka tools for teams that sign in through Microsoft Entra ID, scored against this page's rubric (read 3 October 2026). Total is the weighted score out of 130, with the criteria in order of weight; the weights are explained under how these tools were scored. Conduktor is listed last whatever its total; on its total of 77 it would place third, ahead of AKHQ.
Rank Tool Total (out of 130) Out of the data path Documented Entra ID setup Group-to-role mapping Enforcement behind the login Production access on request Audit trail per person Cost a year, one cluster (modelled)
1 Kpow 117 One container, no external database, not a proxy SAML guide with groups, app roles and 150+ group overage Entra groups or app roles are roles Every UI and API action checked; no role, no access Temporary policies, staged changes Every action and data query, by Entra user $7,380
2 Kafbat UI 91 One container Azure OAuth2 example with app roles; no SAML App role claims as OAuth roles No documented bypass Read-only clusters, no approvals Log to a topic, no view in the product $8,640
3 AKHQ 69 One container Generic OIDC; no Entra guide, no SAML Claim mapped to groups UI only without the JWT secret No approvals or expiry Opt-in log, no view in the product $8,640
4 Conduktor 77 PostgreSQL; Gateway proxy for data-level controls Entra guide for OIDC; mapping stops past 200 groups IdP groups to Console groups No documented gap Owner-approved requests, no expiry 70+ event types, in the UI $32,880

The tools, ranked for teams using Microsoft Entra ID

Rank 1

117 out of 130 Total

Try Kpow in the live demo No signup needed.

Cost a year
$4,500 per Kafka cluster with 100 users included, plus about $2,880 in operator time, so $7,380 on one cluster (modelled)
With Entra ID
SAML guide covering Entra groups, assigned app roles and the 150-group overage
Deployment
One container or JAR, no external database
Out of the data path ×3 weight, this criterion counts 3 times toward the total
9 out of 10
Documented Entra ID setup ×2 weight, this criterion counts 2 times toward the total
10 out of 10
Group-to-role mapping ×2 weight, this criterion counts 2 times toward the total
9 out of 10
Enforcement behind the login ×2 weight, this criterion counts 2 times toward the total
8 out of 10
Production access on request ×2 weight, this criterion counts 2 times toward the total
9 out of 10
Audit trail per person ×2 weight, this criterion counts 2 times toward the total
9 out of 10
Why these scores for Kpow
Out of the data path 9 out of 10
It is one container or JAR whose snapshots, metrics and audit log live in topics on your own cluster, and it reads Kafka as an ordinary client, so nothing sits between your applications and the brokers; Entra ID only ever talks to Kpow’s sign-in endpoint.
Documented Entra ID setup 10 out of 10
Its Microsoft Entra ID guide walks through the non-gallery enterprise application, the identifier and reply URL, assigning users and groups, and two ways to carry roles: Entra groups through the groups claim, or Entra assigned app roles through a Roles claim. It is the only guide here that resolves the overage for users in more than 150 groups, with a saml-entra provider that reads group membership from Microsoft Graph. It documents SAML only; there is no Entra-named OpenID Connect guide. Both are Kpow Enterprise features.
Group-to-role mapping 9 out of 10
Kpow reads roles from the SAML attribute named in its RBAC file, such as Entra’s groups claim, or from a Roles claim filled with the user’s assigned app roles. A policy file then grants actions to those role names.
Enforcement behind the login 8 out of 10
Every action in the UI and API is authorized against Kpow’s own RBAC, Deny takes precedence where policies overlap, a user with no role in the RBAC file is kept out of the UI by default, and the audit log records the identity from Entra ID. The documented gap is Prometheus endpoints staying unauthenticated.
Production access on request 9 out of 10
Permissions are granted per action, temporary policies grant time-boxed access that an admin or a change system calling the Kpow API can create, staged mutations hold changes for approval, and data policies mask fields in data inspect, though masking is per resource rather than per viewer.
Audit trail per person 9 out of 10
Every action, from a data inspect query to an offset reset, is recorded with the user from Entra ID, with a seven-day view in the product, the record written to an audit topic on your own cluster, and webhooks that send it to a SIEM for long-term retention.

With Entra ID. Kpow’s documentation has a Microsoft Entra ID guide. It creates a non-gallery enterprise application with SAML as the sign-on method, Kpow’s /saml address as the reply URL, and starts Kpow with AUTH_PROVIDER_TYPE=saml and the Federation Metadata XML downloaded from Entra. Roles come from Entra groups or from Entra assigned app roles, and for people in more than 150 groups the guide switches the provider to saml-entra, which looks up group membership in Microsoft Graph. SAML sign-in with Azure AD arrived in Kpow release 47 in August 2020 and the overage support in release 96.2. Flex, Factor House’s Apache Flink tool, has its own Entra ID guide.

Where it falls short. Entra ID sign-in, RBAC, staged mutations and the full audit log need Kpow Enterprise; Community Edition is free for 3 clusters and 10 users. The Entra guide covers SAML; a team that wants OpenID Connect follows the generic OpenID Connect guide, which does not name Entra ID. The authentication overview notes that Prometheus endpoints stay unauthenticated when sign-in is on, so restrict them at the network. Kpow governs people working through Kpow; it does not issue or validate the tokens Kafka clients use to reach the brokers.

Rank 2

91 out of 130 Total

Cost a year
$0 licence, about $8,640 in operator time (modelled)
With Entra ID
Azure OAuth2 example reading Entra app roles; no SAML
Deployment
One stateless container
Out of the data path ×3 weight, this criterion counts 3 times toward the total
9 out of 10
Documented Entra ID setup ×2 weight, this criterion counts 2 times toward the total
7 out of 10
Group-to-role mapping ×2 weight, this criterion counts 2 times toward the total
8 out of 10
Enforcement behind the login ×2 weight, this criterion counts 2 times toward the total
7 out of 10
Production access on request ×2 weight, this criterion counts 2 times toward the total
4 out of 10
Audit trail per person ×2 weight, this criterion counts 2 times toward the total
6 out of 10
Why these scores for Kafbat UI
Out of the data path 9 out of 10
It is one stateless container with no database and no proxy, the same pass as Kpow.
Documented Entra ID setup 7 out of 10
Its OAuth2 documentation has an Azure example with the tenant’s issuer and key set and a roles field that reads Entra app role claims, and its identity provider page maps those roles to Kafbat UI roles. Reading app roles avoids the groups claim limit, but no example reads Entra groups, and no SAML is documented.
Group-to-role mapping 8 out of 10
RBAC subjects can be OAuth roles, users, GitHub organisations or teams, Google domains, or LDAP groups.
Enforcement behind the login 7 out of 10
No default-open state and no API bypass are documented; the gap is silent mismatches between identity provider attributes and config, which its RBAC troubleshooting FAQ traces in the logs.
Production access on request 4 out of 10
RBAC grants actions per resource and a cluster can be set read-only, but there is no approval step, no time-boxed grant, and its masking applies the same way to every viewer.
Audit trail per person 6 out of 10
Its audit log names the logged-in user and records reads when the level is set to ALL, but it writes to a topic or the console with no view in the product, so reading the trail is something you build.

With Entra ID. Kafbat UI’s OAuth2 documentation has an Azure example that sets the issuer to login.microsoftonline.com for the tenant, uses the email as the user name for RBAC matching, and sets roles-field: roles to read Entra app role claims. Its supported identity providers page maps one of those roles to a Kafbat UI role as an oauth subject. The Kafbat UI review covers the rest.

Where it falls short. Entra ID has to be connected over OpenID Connect, because SAML is not documented, and roles come from app roles defined on the Entra app registration rather than from the groups a team already keeps. There is no way to grant production access for an hour and have it expire or to hold a change for approval, and the audit log has no view in the product. Its modelled running cost on one cluster is 6 engineer-hours a month, $8,640 a year at $120 an hour.

Rank 3

AKHQ

akhq.io

69 out of 130 Total

Cost a year
$0 licence, about $8,640 in operator time (modelled)
With Entra ID
Generic OIDC; no Entra guide; no SAML
Security default
Disabled until you enable it
Out of the data path ×3 weight, this criterion counts 3 times toward the total
9 out of 10
Documented Entra ID setup ×2 weight, this criterion counts 2 times toward the total
4 out of 10
Group-to-role mapping ×2 weight, this criterion counts 2 times toward the total
8 out of 10
Enforcement behind the login ×2 weight, this criterion counts 2 times toward the total
2 out of 10
Production access on request ×2 weight, this criterion counts 2 times toward the total
3 out of 10
Audit trail per person ×2 weight, this criterion counts 2 times toward the total
4 out of 10
Why these scores for AKHQ
Out of the data path 9 out of 10
It is one stateless container with no database and no proxy, the same pass as Kpow.
Documented Entra ID setup 4 out of 10
It connects to Entra ID through its generic OIDC configuration, but its documentation has no Entra page and does not list SAML, and an issue opened in May 2025 against AKHQ 0.25.1 with an Azure AD issuer, still open, reports a user who signs in successfully but cannot get past the login screen once groups and roles are mapped, with the cause not established in the thread.
Group-to-role mapping 8 out of 10
AKHQ groups bind roles to resource patterns and clusters, and its OIDC config maps a claim such as roles to those groups through groups-field.
Enforcement behind the login 2 out of 10
Security is disabled by default with anonymous users getting full access, and without the JWT signing secret the API will not enforce the group role, so the restriction is in the UI only.
Production access on request 3 out of 10
Groups bind actions to resources by regex, but there is no approval step or time-boxed grant, masking is global, and without the JWT signing secret the restriction is in the UI only.
Audit trail per person 4 out of 10
Audit events are opt-in to a Kafka topic, reads are not recorded, and there is no view for the trail.

With Entra ID. AKHQ’s OIDC configuration works with any OpenID Connect provider, Entra ID included, and its groups decide what each mapped role may read or change. GitHub issue #2175, opened in May 2025 by a user running AKHQ 0.25.1 on AKS with Azure AD, reports a user who signs in through Azure AD but is held at the login screen once groups are mapped, and was still open on 3 October 2026 with the cause not established in the thread. A second report, issue #2597, describes Azure AD sign-in failing with an error from AKHQ’s OAuth library; it was closed in November 2025 after a configuration workaround was posted and a fix was merged. The AKHQ review covers the rest.

Where it falls short. Security is off until you configure it, the API does not enforce group roles unless the JWT signing secret is set, and the audit trail is an opt-in topic that does not record reads. Its modelled running cost on one cluster is 6 engineer-hours a month, $8,640 a year at $120 an hour.

Rank 4

Conduktor

conduktor.io

77 out of 130 Total

Cost a year
25 Console seats at $1,200 is $30,000 plus $2,880 operator time, so $32,880; Gateway Core adds $60,000 and Gateway Protect, which carries encryption and masking, a further $30,000 (modelled)
With Entra ID
Entra ID guide for OIDC; group mapping stops past 200 groups; SAML not described
Deployment
Console on PostgreSQL 13+; data-level controls through Gateway, a proxy
Out of the data path ×3 weight, this criterion counts 3 times toward the total
3 out of 10
Documented Entra ID setup ×2 weight, this criterion counts 2 times toward the total
7 out of 10
Group-to-role mapping ×2 weight, this criterion counts 2 times toward the total
7 out of 10
Enforcement behind the login ×2 weight, this criterion counts 2 times toward the total
6 out of 10
Production access on request ×2 weight, this criterion counts 2 times toward the total
6 out of 10
Audit trail per person ×2 weight, this criterion counts 2 times toward the total
8 out of 10
Why these scores for Conduktor
Out of the data path 3 out of 10
Console needs PostgreSQL 13 or later, and its encryption, data-level masking and Virtual Clusters only work when client traffic goes through Gateway, a proxy in the data path.
Documented Entra ID setup 7 out of 10
Its SSO configuration has an Entra ID section for OpenID Connect, from the app registration and client secret to a groups claim for external group mapping, and does not describe SAML. It states that the group mapping will not work for users in more than 200 groups and points to assigning groups to the application instead.
Group-to-role mapping 7 out of 10
Group mapping comes from the identity provider, with its groups mapped to Console groups, and no claim or attribute detail is given.
Enforcement behind the login 6 out of 10
Its documentation names no enforcement gap, so this is scored from thin evidence.
Production access on request 6 out of 10
Masking can exempt users or groups, which beats every other tool here on who sees unmasked data, and cross-team access requests are approved by the owning team, but no expiring grant is described and topic creation that passes policy is a direct API call.
Audit trail per person 8 out of 10
Console logs produce, consume and admin requests across more than 70 event types with user, IP and timestamp, browsable in the UI and exported as CloudEvents.

With Entra ID. Conduktor’s SSO configuration documentation covers LDAP and OIDC. Its Entra ID section registers Console as an application with a callback of /oauth/callback/ plus the configuration name, uses the tenant’s login.microsoftonline.com issuer, and adds a groups claim in the token configuration so Entra groups map to Console groups. It notes that this external group mapping will not work for users who belong to more than 200 groups, and that some groups should then be assigned to the application with the groups claim limited to them. Its data-level controls, encryption, masking of the data itself and virtual clusters, run in Conduktor Gateway, which applications reach by connecting to Gateway instead of the brokers. The Conduktor review covers the rest.

Where it falls short. Entra ID is connected over OpenID Connect only, group mapping stops for people in more than 200 groups, Console needs PostgreSQL, and the data-level controls need Gateway in front of the brokers. On AWS Marketplace, Conduktor Enterprise lists Console at $1,200 a seat for the first 100 seats, Gateway Core, which carries virtual clusters, at $60,000 a year, and Gateway Protect, the add-on for encryption and masking, at a further $30,000.

What teams using Microsoft Entra ID need

This page is about Kafka tools for teams whose people sign in through Microsoft Entra ID, which Microsoft renamed from Azure Active Directory in 2023. Entra ID is not a Kafka platform: it is the identity provider in front of the tool, so the question here is how a Kafka tool is connected to Entra ID, how Entra’s groups and app roles become permissions, and whether the record of who did what survives the trip, whatever Kafka the team runs. The wider question of single sign-on for Kafka, including tokens for applications, is covered in the best tools for Kafka SSO integration, teams running Kafka workloads on Azure’s own service are covered in the best Kafka UI tools for Azure Event Hubs, and teams whose identity provider is Okta in the best Kafka tools for teams using Okta.

Entra ID sends groups as object IDs unless told otherwise. Microsoft’s group claims documentation lists the formats: the group’s object ID, the display name for cloud-only groups, or the sAMAccountName for groups synchronised from on-premises Active Directory. Whatever format the identity team picks is what the role names in the Kafka tool’s configuration have to match, so a tool’s RBAC file written against group names will refuse everyone if Entra is sending object IDs.

Large organisations hit a limit that small tests never show. Microsoft documents a maximum of 150 groups in a SAML token and 200 in a JWT; past it, Entra ID leaves the group list out and the application has to read the user’s membership from Microsoft Graph. A tool that does not make that call signs the person in with no group roles, and nothing reports why. The four tools here handle it in four ways. Kpow’s saml-entra provider reads the membership from Graph. Kafbat UI’s Entra example reads app roles, which Microsoft describes as another way to avoid the overage. Conduktor documents that its group mapping stops working past 200 groups and suggests limiting the claim to groups assigned to the application. AKHQ’s documentation does not mention it.

Who may use the tool at all is decided in Entra ID, but only if the identity team says so. An enterprise application’s Assignment required setting, when set to No, lets every user in the tenant sign in, along with any external users invited into the organisation. Kpow’s Entra guide assigns users and groups to the application, and Kpow’s RBAC keeps out any signed-in user who holds no role in the RBAC file by default, so a misconfigured assignment does not become open access to Kafka.

How strongly people sign in is decided in Entra ID too. Conditional Access policies apply per application, so a Kafka tool that signs everyone in through Entra ID takes on whatever the policy for its application requires, multi-factor authentication included, without settings of its own. Re-authentication has two clocks. Microsoft’s sign-in frequency setting works with SAML and OpenID Connect applications as long as they regularly redirect back to Entra ID, and in Kpow SAML_SESSION_S sets how long a session lasts before Kpow sends the user back to Entra ID, one hour by default. A Kafka team that cannot get the central identity team to change a policy can still set its own session length.

Out of the data path. People reach the tool through Entra ID, but the tool itself reaches Kafka as a client. A tool whose controls work only when application traffic passes through a proxy needs every application pointed at the proxy instead of the brokers, and a tool with a database of its own is one more stateful service for the security team to review. Kpow is one container with no external database, installed in your own environment and out of the data path. Conduktor Console also connects directly, with a PostgreSQL database of its own; Conduktor’s data-level controls, such as encryption, masking of the data itself and virtual clusters, run in Conduktor Gateway, a Kafka proxy that client applications connect through.

Documented Entra ID setup. A documented guide names the application type, the reply or redirect URL, the claim that carries groups or roles, what happens past the group limit, and the settings the tool starts with, so the identity team can create the application without a trial-and-error loop. Where only a generic OIDC page exists, the team works out the Entra side alone, and problems surface as user reports such as AKHQ’s issue #2175, a login screen the reporter could not get past with Azure AD once groups were mapped.

Group-to-role mapping. The role a person gets should come from Entra group membership or an Entra app role, read from a claim or attribute the tool lets you name, so access is managed where people already are. In Kpow, every sign-in option feeds the same RBAC policies, so a team that moves from LDAP against on-premises Active Directory to Entra ID changes the sign-in settings and keeps its access rules, provided the role names match the format Entra sends.

Enforcement behind the login. Mapping a group to a role is worth little if the tool checks it only in the browser. The role has to be checked on every action, in the UI and the API alike, with a deny that wins when policies overlap.

Production access on request. Entra ID grants the application; the tool grants what a person may do inside it. What a tool adds is per action: who may read records, who may reset a group’s offsets, access to production that expires after the task, and a second person’s approval before a change.

Audit trail per person. A shared tool reaches Kafka as one client identity, so the brokers’ records name the tool, not the engineer. Entra ID’s sign-in logs show who signed in to the application and when, but not what they did once inside. The record of which Entra user changed what has to come from the tool. The options are compared in the best tools for Kafka audit logging.

Kpow does not win on every point. Entra ID sign-in is a Kpow Enterprise feature, and Kpow’s Entra guide covers SAML only, while Kafbat UI and Conduktor each document an Entra ID connection over OpenID Connect, Kafbat UI at no licence cost. Conduktor’s masking can exempt named groups from masking, which Kpow’s per-resource masking does not do.

Who runs Kpow with Microsoft Entra ID

Microsoft Entra ID is the identity provider in front of Kpow rather than a Kafka platform that Kpow runs on, and the customer case studies on factorhouse.io do not mention Entra ID, so this page names no customer and makes no claim about which Factor House customers sign in through it. The public evidence is the documentation: a Microsoft Entra ID SAML guide in Kpow, with SAML sign-in through Azure AD supported since release 47 in August 2020, and a Microsoft Entra ID SAML guide in Flex. This page describes only what those guides cover: the Entra application settings, the environment variables Kpow starts with, and how Entra groups or app roles become roles.

How a team runs Kpow with Microsoft Entra ID

Installing it. Kpow runs as one Docker container, a Java JAR or from the Helm charts, in the same network as the Kafka clusters. It needs no external database, because its snapshots, metrics and audit log live in topics on the Kafka cluster. The Entra application needs only Kpow’s address, so Kpow is reachable at a stable hostname before the application is created.

Creating the enterprise application. Following the Entra ID guide, an administrator opens the Microsoft Entra admin center, creates a non-gallery enterprise application for the Kpow instance and picks SAML as the single sign-on method. The identifier is a name for the instance, such as Kpow-UAT-1, and the reply URL is Kpow’s /saml address. The administrator downloads the Federation Metadata XML and assigns the users and groups who may sign in; anyone not assigned gets an error from Entra ID instead of reaching Kpow. Kpow then starts with AUTH_PROVIDER_TYPE=saml, SAML_RELYING_PARTY_IDENTIFIER, SAML_ACS_URL and SAML_METADATA_FILE pointing at the saved metadata.

Turning Entra groups into roles. After adding a group claim to the application in Entra ID, the RBAC file sets the SAML role_field to Entra’s groups claim, http://schemas.microsoft.com/ws/2008/06/identity/claims/groups, and the RBAC file grants Allow, Deny or Stage per action and resource to those group values, with admin_roles for the groups that administer Kpow. Tenants give each Entra group a view limited to its own topics and consumer groups.

Or using Entra app roles instead. The same guide shows the other route: the administrator sets the name ID to the user principal name, adds a claim called Roles sourced from user.assignedroles, and assigns each user an app role in the application. The guide notes that Entra ID does not pass the default User role in the SAML response, so every role Kpow should see has to be assigned explicitly.

Handling people in more than 150 groups. Where anyone who signs in belongs to more than 150 groups, the guide adds a client secret to the application, grants it the Microsoft Graph permissions User.Read.All and GroupMember.Read.All with admin consent, and changes the provider to AUTH_PROVIDER_TYPE=saml-entra with MICROSOFT_GRAPH_CLIENT_ID, MICROSOFT_GRAPH_CLIENT_SECRET and ENTRA_TENANT_ID. ENTRA_SECURITY_ENABLED_ONLY, true by default, limits the lookup to security groups. Release 96.2 added this so that RBAC still resolves for those users.

Checking what Entra ID sent. When a person signs in and sees less than expected, the cause is nearly always one of three things: Entra ID did not send the group, it sent the group in a different format from the one in the RBAC file, or the person is past the group limit on the plain saml provider. Starting Kpow with DEBUG_AUTH=true logs the SAML response, and Kpow’s /me endpoint returns the signed-in user’s provider, email and roles as JSON, as the SAML overview shows, so the two can be compared directly.

Renewing the signing certificate. Entra ID signs SAML responses with a certificate that has an expiry date, and Microsoft’s federation certificate guide covers renewing it and adding an email address for expiry notices. Because Kpow reads the signing details from the metadata file named in SAML_METADATA_FILE, a renewed certificate means downloading the metadata again and restarting Kpow with it, which is worth putting on the same calendar as the expiry notice.

Granting production access for a task. A temporary policy grants a role extra access that expires, and staged mutations hold a change until someone with the right role approves it, so an Entra group can hold read access day to day and change access only for the task.

Keeping the record. The audit log records every action and data inspect query with the user from Entra ID, even though Kpow reaches Kafka as one client, and a webhook sends those records to Slack, Microsoft Teams or any HTTP endpoint, such as a SIEM collector, where they sit beside Entra ID’s own sign-in logs.

Signing in to Flex the same way. Teams that also run Apache Flink can put Flex behind the same Entra tenant with its own Entra ID guide, which follows the same steps with Flex’s /saml address, including group claims, assigned app roles and the saml-entra provider for large group memberships.

Kpow live demo

See the Kpow UI before you create the Entra app

The live Kpow demo runs on two Apache Kafka clusters on Amazon MSK. It shows brokers, topics, consumer groups, schema registries and the __oprtr_audit_log topic where Kpow keeps its audit trail, with no signup. Entra ID sign-in is not part of the demo, so creating an enterprise application for your own Kpow instance and mapping one group to a role is the step to try next.

For teams choosing a Kafka tool that signs people in through Microsoft Entra ID.

Try the Kpow demo

FAQ

What is the best Kafka tool for teams using Microsoft Entra ID?

On this page’s rubric, Kpow, with 117 of 130 points: its Entra ID guide covers group claims, assigned app roles and users in more than 150 groups, it checks the resulting roles on every action in the UI and API, it records each action against the Entra user, and it runs as one container with no external database. Kafbat UI is the highest-scoring free option, over OpenID Connect with Entra app roles.

Does Kpow support Azure AD single sign-on?

Yes. Azure AD is now called Microsoft Entra ID, and Kpow has supported SAML sign-in with it since release 47 in August 2020. The Entra ID guide covers the enterprise application, group claims and assigned app roles. Entra ID sign-in is a Kpow Enterprise feature.

Why can a user sign in through Entra ID but not use Kpow?

By default Kpow keeps out users who have no role defined in the RBAC file. Either the application’s group claim did not send the user’s group, Entra ID sent it as an object ID while the RBAC file names the group, or the user is in more than 150 groups and Kpow is still on the plain saml provider rather than saml-entra. DEBUG_AUTH=true logs what Entra ID sent and the /me endpoint shows the roles Kpow derived.

What happens to users in more than 150 Entra groups?

Entra ID stops listing their groups in the SAML token and sends a reference to Microsoft Graph instead. Kpow’s saml-entra provider, added in release 96.2, follows that reference with its own Graph credentials, so those users keep their roles. Using Entra app roles instead of groups also avoids the limit.

Can Entra ID authenticate Kafka clients as well as people?

Yes, but that is a separate integration on the brokers, not in the tool. Applications can fetch tokens from Entra ID with the OAuth client credentials grant and present them to Kafka through SASL/OAUTHBEARER, which brokers have to be configured to validate. Kpow connects to Kafka with the same SASL or TLS settings as any client; how brokers validate tokens is compared in the best tools for Kafka SSO integration.

Is there a free Kafka UI that works with Entra ID?

Kafbat UI and AKHQ are open source and connect to Entra ID over OpenID Connect; Kafbat UI documents an Azure example that reads Entra app roles, and neither documents SAML. Entra ID sign-in in Kpow needs Kpow Enterprise; Kpow Community Edition is free on up to 3 clusters and 10 users.

How these tools were scored

Three of the six criteria, out of the data path, production access on request and the audit trail per person, are ones Factor House scores on every page for teams that share a Kafka cluster; group-to-role mapping and enforcement behind the login are scored as on the best tools for Kafka SSO integration, and documented Entra ID setup is this page’s own. They are listed here in order of weight. Each criterion is scored 0 to 10: 10 where a tool is the only one here doing it or clearly the best, 8 for a clean documented pass, 5 or 6 for partial support or support that needs work the reader must verify, 1 to 4 for a weak or indirect form, and 0 where it is absent. The weights add up to 13, so totals are out of 130.

1. Out of the data path (counts three times). The tool should run in your own environment, reach Kafka as an ordinary client and keep no data outside your own cluster. Scored lower: tools that need an external database of their own, and tools whose controls work only when application traffic passes through a vendor’s proxy. A self-hosted container with no external database and no proxy scores 9, and one that needs both a database and a proxy for its controls 3; 10 is kept for an option with nothing to deploy at all, and no option here qualifies. This criterion is scored the same way on every Factor House page that uses it, and only its weight changes with the reader.

2. Documented Entra ID setup (counts twice). Whether the tool’s own documentation describes connecting Entra ID by name, with the application settings, the claim that carries groups or roles, and what happens for users past Entra’s group limit. A guide that covers groups, app roles and a working path past the limit scores 10; an Entra example for one protocol that either avoids the limit through app roles or documents it as a restriction scores 7; generic OIDC with no Entra page scores 5, and 4 where an open issue reports Entra sign-in trouble.

3. Group-to-role mapping (counts twice). Whether Entra groups or app roles, read from a claim or attribute the reader can name, become the tool’s roles.

4. Enforcement behind the login (counts twice). Whether the role is checked on every action in the UI and the API, with deny winning where policies overlap, and whether the tool is closed until configured.

5. Production access on request (counts twice). Whether an engineer can be granted access to production for one task and have it expire, whether permissions separate reading records from resetting offsets, whether a destructive change can be held for a second person’s approval, and whether sensitive fields can be masked from people who do not need them.

6. Audit trail per person (counts twice). Whether the tool records each action, data queries included, against the person from Entra ID, and whether that record can be read in the product and sent to the systems that keep it long term.

Costs are modelled for one production Kafka cluster and 25 engineers at $120 per engineer hour, using the same hours per tool class as Factor House’s other comparison pages. Tools with a licence carry the published price plus 2 hours a month to run. The open-source UIs carry 6 hours a month, $8,640 a year, to run, secure and keep current. Every tool here connects to Entra ID directly, Kpow over SAML and the other three over OpenID Connect, so no sign-in proxy is added to any of them. Kpow’s $7,380 uses the published price of $4,500 per cluster with 100 users included. Conduktor’s Console is $1,200 a seat on AWS Marketplace, and its Gateway Core and Gateway Protect prices are added for the data-level controls.

The criteria map onto what Entra ID decides for an application in the figure below.

F1 From what Entra ID decides to what a Kafka tool has to do
What Entra ID decides What the tool has to do
Protocol Offers SAML and OpenID Connect sign-in for an application Support the one the identity team has standardised on
Assignment Lets everyone in the tenant sign in unless assignment is required Refuse a signed-in user who holds no role
Groups Sends group object IDs, and past 150 groups in SAML only a Graph link Read the names it is sent and still find the roles past the limit
Sign-in policy Applies Conditional Access, MFA included, per application Take its sign-in from Entra ID rather than keep its own passwords
Identity Names the person behind every session Check every action against that person's roles and record it
Each row starts from a setting Microsoft's Entra ID documentation describes for an enterprise application, then names what a Kafka tool needs to do with it.

Every option is scored from 0 to 10 on each criterion, from the evidence and sources this page cites, and the reason for each score is on its card. The criteria are weighted: Out of the data path counts three times, Documented Entra ID setup counts twice, Group-to-role mapping counts twice, Enforcement behind the login counts twice, Production access on request counts twice and Audit trail per person counts twice, for a total out of 130. Out of the data path counts three times, because a tool that people sign in to through Entra ID still has to reach Kafka, and a tool whose controls work through a proxy or that needs a database of its own adds a service to secure beside the identity work. Documented Entra ID setup, group-to-role mapping, enforcement behind the login, production access on request and the per-person audit trail count twice: signing in is the easy half, and what decides whether Entra ID is worth anything in a Kafka tool is which role each Entra group becomes, whether that still works for people in many groups, whether the tool checks the role on every action, and whether the record names the person. This page is published by Factor House, which makes Kpow. Every option is scored on the same rubric and the same sources: Kpow's per-criterion scores are set the same way as every other option's and are not adjusted, and the weights apply to every option alike. Kpow ranks first on its total of 117 out of 130. The other options follow by total. Conduktor is listed last whatever its total; on its total of 77 it would place third.

Related reading