Skip to content

Conversation

@tombentley
Copy link
Member

It's been suggested to break #71 into separate proposals to simplify review etc. This PR adds a "proposal" which is really just defining some common terminology for the project. Other proposals will refer to this one, so the terms are all defined in one place.

Signed-off-by: Tom Bentley <tbentley@redhat.com>
@tombentley tombentley requested a review from a team as a code owner July 25, 2025 03:40
Signed-off-by: Tom Bentley <tbentley@redhat.com>
@tombentley
Copy link
Member Author

@robobario fixed, if you wanted to take another pass.

@tombentley tombentley mentioned this pull request Jul 29, 2025
Copy link
Member

@robobario robobario left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@SamBarker SamBarker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

I think starting with terms is a great place to begin.

Comment on lines 94 to 101
|---------------------|---------------------|--------------------------|
| Mechanism | Definition | Kafka implementation KIP |
|---------------------|---------------------|--------------------------|
| PLAIN | [RFC 4616][RFC4616] | [KIP-43][KIP43] |
| GSSAPI (Kerberos v5)| [RFC 4752][RFC4752] | [KIP-12][KIP12] |
| SCRAM | [RFC 5802][RFC5802] | [KIP-84][KIP84] |
| OAUTHBEARER | [RFC 6750][RFC6750] | [KIP-255][KIP255] |
|---------------------|---------------------|--------------------------|
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The github renderer (at least) does not treat the first & last lines as part table

Suggested change
|---------------------|---------------------|--------------------------|
| Mechanism | Definition | Kafka implementation KIP |
|---------------------|---------------------|--------------------------|
| PLAIN | [RFC 4616][RFC4616] | [KIP-43][KIP43] |
| GSSAPI (Kerberos v5)| [RFC 4752][RFC4752] | [KIP-12][KIP12] |
| SCRAM | [RFC 5802][RFC5802] | [KIP-84][KIP84] |
| OAUTHBEARER | [RFC 6750][RFC6750] | [KIP-255][KIP255] |
|---------------------|---------------------|--------------------------|
| Mechanism | Definition | Kafka implementation KIP |
|---------------------|---------------------|--------------------------|
| PLAIN | [RFC 4616][RFC4616] | [KIP-43][KIP43] |
| GSSAPI (Kerberos v5)| [RFC 4752][RFC4752] | [KIP-12][KIP12] |
| SCRAM | [RFC 5802][RFC5802] | [KIP-84][KIP84] |
| OAUTHBEARER | [RFC 6750][RFC6750] | [KIP-255][KIP255] |

From the PR review:
Screenshot 2025-08-04 at 11 09 24


### Identity preserving

SASL Passthrough is one way to for a proxy to be **identity preserving**, which means that, for all client identities in the virtual cluster, each of those identities will have the same name as the corresponding client identity in the broker.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth defining what we/Kafka mean by identity?

We can't actually ensure that we offer this definition. In the face of opaque tokens we have no way of knowing what the identity in the proxy is or if is the same as the broker holds. So is there a practical difference between SASL Passthrough and Identity Preserving?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dropped "identity preserving" from the doc. I don't think we really use this term in any of the other documents, so there's no benefit from trying to define it.

FTR I guess there are two orthogonal ideas going on. The definition I wrote required the proxy to have inferred some kind of identity (i.e. assumed passthrough inspection). But the wider idea is that when we're passing through the proxy is not substituting any credentials of its own. I.e. there is only one "domain of users".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's probably an important thought to draw out in the docs, probably not in this proposal

A **TLS client certificate** is a TLS certificate for the client-side of a TLS Handshake.
For a given client and server pairing, a proxy might have _two_ of these: the Kafka client's TLS client certificate, and the proxy's own TLS client certificate for its connection to the server.

### Client mutual TLS authentication
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non blocking. I think Downstream mutual TLS authentication and Upstream mutual authentication are clearer.

Signed-off-by: Tom Bentley <tbentley@redhat.com>
@tombentley tombentley merged commit 5dae50c into kroxylicious:main Aug 7, 2025
1 check passed
@tombentley tombentley deleted the 004-terminology-for-authentication branch August 7, 2025 02:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants