cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Holmberg (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-11471) Add SASL mechanism negotiation to the native protocol
Date Mon, 17 Apr 2017 17:41:41 GMT


Adam Holmberg commented on CASSANDRA-11471:

bq. like any protocol change both C* and the driver the tests depend on will need to change
simultaneously with tests potentially breaking in between? Unless there is a process around
This has come up a number of times with new contributors driving client-impacting changes.
There is not an official policy on this, but it probably warrants writing down somewhere.
For now I will quote a [previous comment|]:
I don't think there is a policy defined, but I can describe what I've observed in the past:
- Tickets requiring driver updates are labeled `client-impacting` on creation
- Devs or reviewers ping driver maintainers to make sure they're aware (early in design/impl
is best)
- Tickets get created in the driver JIRAs, and stakeholders coordinate on when it will be
- If the server ticket gets ahead of driver scheduling, and the feature requires client integration
tests, the contributor will sometimes implement the feature in one of the drivers, and offer
a PR
- The server ticket can either block pending driver releases, or take the feature and package
a snapshot of the driver (understanding that the driver maintainers reserve the right to change
API and functionality before final merge). How this is managed depends on where the projects
are relative to their own major milestones, and the risk and impact of change.

I created [CASSANDRA-13453|] to write
this up somewhere.

> Add SASL mechanism negotiation to the native protocol
> -----------------------------------------------------
>                 Key: CASSANDRA-11471
>                 URL:
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: CQL
>            Reporter: Sam Tunnicliffe
>            Assignee: Ben Bromhead
>              Labels: client-impacting
>             Fix For: 4.x
>         Attachments: CASSANDRA-11471
> Introducing an additional message exchange into the authentication sequence would allow
us to support multiple authentication schemes and [negotiation of SASL mechanisms|].

> The current {{AUTHENTICATE}} message sent from Client to Server includes the java classname
of the configured {{IAuthenticator}}. This could be superceded by a new message which lists
the SASL mechanisms supported by the server. The client would then respond with a new message
which indicates it's choice of mechanism.  This would allow the server to support multiple
mechanisms, for example enabling both {{PLAIN}} for username/password authentication and {{EXTERNAL}}
for a mechanism for extracting credentials from SSL certificates\* (see the example in [RFC-4422|]).
Furthermore, the server could tailor the list of supported mechanisms on a per-connection
basis, e.g. only offering certificate based auth to encrypted clients. 
> The client's response should include the selected mechanism and any initial response
data. This is mechanism-specific; the {{PLAIN}} mechanism consists of a single round in which
the client sends encoded credentials as the initial response data and the server response
indicates either success or failure with no futher challenges required.
> From a protocol perspective, after the mechanism negotiation the exchange would continue
as in protocol v4, with one or more rounds of {{AUTH_CHALLENGE}} and {{AUTH_RESPONSE}} messages,
terminated by an {{AUTH_SUCCESS}} sent from Server to Client upon successful authentication
or an {{ERROR}} on auth failure. 
> XMPP performs mechanism negotiation in this way, [RFC-3920|]
includes a good overview.
> \* Note: this would require some a priori agreement between client and server over the
implementation of the {{EXTERNAL}} mechanism.

This message was sent by Atlassian JIRA

View raw message