Thanks for submitting this, Joel. IMO this will be a valuable addition to
have and would benefit anyone running C* in a multi-cloud, multi-auth
environment (any big enterprise, really). Also echoing the appreciation for
such a detailed CEP!

Cheers,
-Nate

On Fri, Jul 4, 2025 at 6:39 AM Joel Shepherd <sheph...@amazon.com> wrote:

> Thanks Andy - My hope/expectation is this would significantly reduce the
> amount of friction involved when either implementing or migrating to a new
> authenticator. I suspect it will benefit more complex environments too,
> when a single authenticator isn't ideal for all clients.
>
> At this point, the stickiest bits I've run into have involved logic that
> switches on "the" authenticator class, because of the hardcoded dependency
> on a specific authn implementation, and working out how to sanely extend
> the logic once it's possible for a single node to be using different
> authenticators for different client sessions. Solvable but will take some
> refactoring and might also generate debate about what the right behaviors
> are in that scenario. An example is the RoleManager which currently creates
> additional role attributes if the Password Authenticator is in use ...
> which, now that you mention it, I wonder if that's already broken for the
> MutualTlsWithPasswordFallbackAuthenticator. Hmm.
>
> Anyway, thanks for the feedback -- Joel.
> On 7/3/2025 7:52 AM, Tolbert, Andy wrote:
>
>
> Hi Joel,
>
> +1 (nb), I think this is a really good idea and well fleshed our CEP!
>
> The capability to allow the server to support multiple authenticators
> would be very useful.  CEP-34 added a
> 'MutualTlsWithPasswordFallbackAuthenticator' for simultaneously supporting
> both mTLS and Password authentication, primarily as a means to introduce
> mTLS auth without breaking password auth and also a possible gradual
> migration to mTLS, but this only works for combining these two particular
> authenticators, and also creates another authenticator to support.
>
> The migration to any new auth strategy would likely involve the need to
> simultaneously support an existing and new auth provider.  I think the
> approach you describe is well described and should meet this need assuming
> users use a driver that supports it.
>
> In terms of the protocol, utilizing the capabilities of the existing
> OPTIONS, STARTUP and SUPPORTED messages to communicate what authenticators
> are supported/should be used is pretty clever as it shouldn't require a
> protocol version uprev, and hopefully wouldn't be too complicated for a
> driver to implement.
>
> Thanks,
> Andy
>
> On Mon, Jun 30, 2025 at 11:44 AM Joel Shepherd <sheph...@amazon.com>
> wrote:
>
>> Erm ... and here's the CEP:
>>
>> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-50%3A+Authentication+Negotiation
>>
>> (Thanks for the heads up, Abe ...)
>>
>> -- Joel.
>>
>> On 6/30/2025 9:37 AM, Joel Shepherd wrote:
>> > Hello - We would like to propose CEP-50: Authentication Negotiation
>> > for adoption by the community: <link> .
>> >
>> > This CEP proposes minor changes to the initial handshake protocol
>> > (OPTIONS, SUPPORTED and STARTUP messages) to enable a client to inform
>> > the node of the authenticators supported by the client, and changes in
>> > the node's authentication-related areas to enable it to pick its
>> > preferred authenticator for each client client connection. The CEP
>> > explains why this approach is proposed, instead of implementing a
>> > "negotiating authenticator".
>> >
>> > Authentication negotiation will make it easier and safer for
>> > administrators to migrate clusters to stronger authentication
>> > mechanisms (including switching on authentication for a cluster that
>> > has been using "allow-all" authentication) without downtime, and to
>> > support environments where different clients prefer different
>> > authentication mechanisms (e.g., username and password for ad-hoc
>> > cqlsh access, mutual TLS for programmatic access, etc.), without
>> > having to pick a single "lowest common denominator" authenticator for
>> > all. Additionally, the proposed changes are intended to be backwards
>> > compatible for both clients and nodes.
>> >
>> > Thanks in advance for your time and feedback. Please keep the
>> > discussion on this mailing list thread.
>> >
>> > Thanks! -- Joel.
>> >
>> >
>> >
>> >
>>
>

Reply via email to