[ 
https://issues.apache.org/jira/browse/KAFKA-1684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14181947#comment-14181947
 ] 

Gwen Shapira commented on KAFKA-1684:
-------------------------------------

Its a large patch, so I didn't do a full review yet. But I wanted to mention 
that I love the ChannelFactory implementation. Very nice, clean and reusable.

IMO, this should be a dependency for KAFKA-1686, so we can reuse a lot of the 
work done here.
I think it will be cleaner and easier to simply reuse this code and have 
SASL/GSSAPI simply work as another channel than trying to cram SASL  Kerberos 
on the same SocketServer as the existing connections (I've seen this done in 
HBase, there is a lot of (isSecure, isWrap, etc) involved). 

I'm using this implementation as reference to how Session object can integrate 
with a secured nio channel (KAFKA-1683 for reference).

It looks like SSLSocketChannel has a local SSLEngine that I can access to get 
the client identity. For consistency, we may want all channels (SASL, TLS, 
Kafka) to expose a getIdentity method that SocketServer can use to populate the 
Session object. 


> Implement TLS/SSL authentication
> --------------------------------
>
>                 Key: KAFKA-1684
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1684
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: security
>    Affects Versions: 0.9.0
>            Reporter: Jay Kreps
>            Assignee: Ivan Lyutov
>         Attachments: KAFKA-1684.patch
>
>
> Add an SSL port to the configuration and advertise this as part of the 
> metadata request.
> If the SSL port is configured the socket server will need to add a second 
> Acceptor thread to listen on it. Connections accepted on this port will need 
> to go through the SSL handshake prior to being registered with a Processor 
> for request processing.
> SSL requests and responses may need to be wrapped or unwrapped using the 
> SSLEngine that was initialized by the acceptor. This wrapping and unwrapping 
> is very similar to what will need to be done for SASL-based authentication 
> schemes. We should have a uniform interface that covers both of these and we 
> will need to store the instance in the session with the request. The socket 
> server will have to use this object when reading and writing requests. We 
> will need to take care with the FetchRequests as the current 
> FileChannel.transferTo mechanism will be incompatible with wrap/unwrap so we 
> can only use this optimization for unencrypted sockets that don't require 
> userspace translation (wrapping).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to