I think the challenge here is that even after KIP-35 clients will not know
whether the server supports new sasl mechanisms or not, so non-Java clients
will have to assume it is not supported (and will therefore lag behind on
features).

I think this highlights a short-coming of KIP-35, and I'm wondering if
there are good ways to address this.

Gwen


On Mon, Apr 4, 2016 at 12:05 PM, Jun Rao <j...@confluent.io> wrote:

> I think with KIP-43, the existing way of sasl handshake during connection
> still works. It's just that if you want to support non-GSSAPI, you will
> need a new sasl handshake implementation in the client. It's unfortunate
> that Protocol currently only covers the communication after the connection
> is ready to use, but not during handshake. For now, we can probably just
> document this change during handshake since changing the implementation is
> optional.
>
> Thanks,
>
> Jun
>
> On Mon, Apr 4, 2016 at 11:28 AM, Gwen Shapira <g...@confluent.io> wrote:
>
> > Hi Kafka Team,
> >
> > As a practical test-case of KIP-35, I'd like to turn your attention to
> > KIP-43:
> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-43
> >
> > KIP-43 makes an interesting modification to the protocol, but only under
> > specific conditions:
> >
> > "*Client flow:*
> >
> >    1. If sasl.mechanism is not GSSAPI, send a packet with the mechanism
> >    name to the server. Otherwise go to Step 3.
> >       - Packet Format: | Version (Int16) | Mechanism (String) |
> >    2. Wait for response from the server. If the error code in the
> response
> >    is non-zero, indicating failure, report the error and fail
> > authentication.
> >    3. Perform SASL authentication with the configured client mechanism
> >
> > *Server flow:*
> >
> >    1. Wait for first authentication packet from client
> >    2. If this packet is a not valid mechanism request, go to Step 4 and
> >    process this packet as the first GSSAPI client token
> >    3. If the client mechanism received in Step 2 is enabled in the
> broker,
> >    send a response with error code zero and start authentication using
> the
> >    specified mechanism. Otherwise, send an error response including the
> > list
> >    of enabled mechanisms and fail authentication.
> >    - Packet Format: | ErrorCode (Int16) | EnabledMechanisms
> > (ArrayOf(String))
> >       |
> >    4. Perform SASL authentication with the selected mechanism. If
> mechanism
> >    exchange was skipped, process the initial packet that was received
> from
> > the
> >    client first."
> >
> >
> > I'd love to know how this will be communicated to clients via
> > VersionRequest proposed in KIP-35 (mostly because Jun and I need to
> review
> > KIP-43 and we want to be sure we are not breaking the new protocol at the
> > same time we introduce it)
> >
> > Do we:
> > 1. Bump protocol version of every single Request? Even though unless you
> > are using a new sasl mechanism nothing changes?
> > 2. Ignore and not bump protocol? If so, how will clients know that new
> > sasl.mechanisms are supported?
> > 3. Something else?
> >
> > Gwen
> >
>

Reply via email to