> On May 24, 2016, 12:03 a.m., Michael Han wrote:
> > src/java/main/org/apache/zookeeper/server/quorum/Learner.java, line 247
> > <https://reviews.apache.org/r/47354/diff/3/?file=1388773#file1388773line247>
> >
> >     This will throw SaslException when authentication failed. As a result, 
> > we should probably update the exception description of connectToLeader 
> > method:
> >     
> >     @throws SaslException - if Sasl authentication failed.
> 
> Rakesh R wrote:
>     I've made the interface QuorumAuthClient more generic and throws 
> IOException. Please see latest patch. Thanks!

LGTM.


> On May 24, 2016, 12:03 a.m., Michael Han wrote:
> > src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuth.java, line 
> > 32
> > <https://reviews.apache.org/r/47354/diff/3/?file=1388781#file1388781line32>
> >
> >     I am tempted to rename this variable to QUORUM_SERVER_SASL_REQUIRED so 
> > it is consistent just like other configuration variables where the value of 
> > the variable and its name literally match. There are also other places in 
> > code where we could replace 'auth' with 'sasl', for example: 
> > quorumServerAuthRequired -> quorumServerSaslRequired
> >     
> >     Not sure what others think about this.
> 
> Rakesh R wrote:
>     With this jira we are introducing sasl based authentication but in future 
> quorum can support ssl based authentication way. I have chosen the word 
> 'auth' considering this case and I thought 'auth' is more generic. Does this 
> makes sense to you?
> 
> Michael Han wrote:
>     Yes, this makes sense. I agree that QUORUM_SERVER_AUTH_REQUIRED should be 
> used so it can cover both SASL and SSL authentication (and others, if any.). 
>     I am wondering though if we should change the value to be 
> "quorum.auth.serverRequireAuth" instead of "quorum.auth.serverRequireSasl" 
> accordingly - since the name is generic, should the value also be generic?
> 
> Rakesh R wrote:
>     oh ok, I got your point. 'quorum.auth.serverRequireAuth' and 
> 'quorum.auth.clientEnableAuth' makes sense to me. Value is either true or 
> false.
> 
> Rakesh R wrote:
>     Hi Michael, On a second thought I've decided to keep these configs 
> specific to sasl. Its modified in my latest patch, please take a look at it. 
> Thanks!

LGTM.


> On May 24, 2016, 12:03 a.m., Michael Han wrote:
> > src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuthClient.java,
> >  line 34
> > <https://reviews.apache.org/r/47354/diff/3/?file=1388782#file1388782line34>
> >
> >     Similar to the comment on QuorumAuthServer::authenticate interface, we 
> > could provide some clarifications on the return value and the exception 
> > throwed for a user of this interface. Also the 
> > QuorumAuthClient::authenticate will never return false under current 
> > implementation.
> 
> Rakesh R wrote:
>     QuorumAuthServer and QuorumAuthClient are interfaces. I have defined the 
> interfaces and written javadoc in a generic way. I think, I could have added 
> javadoc for the implementation classes(SaslQuorumAuthServer, 
> NullQuorumAuthServer, SaslQuorumAuthClient, NullQuorumAuthClient) detailing 
> the specific cases. I will add javadocs for the implementations. Whats your 
> opinion?
> 
> Michael Han wrote:
>     Yeah that should work. I think my main concern was that the interface doc 
> should mention that a throw of SaslException also means authentication 
> failure, because when I was reading the code it was not clear to me what 
> should I rely on to decide authentication sucess or fail, until I read the 
> implementation.
> 
> Rakesh R wrote:
>     Modified the interface "public void authenticate(Socket sock) throws 
> IOException;". Please take a look at it. thanks!

LGTM.


> On May 24, 2016, 12:03 a.m., Michael Han wrote:
> > src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java,
> >  line 39
> > <https://reviews.apache.org/r/47354/diff/3/?file=1388783#file1388783line39>
> >
> >     The current implementation of this method in SaslQuorumAuthServer will 
> > never return false. Also, there is one case that this will return true even 
> > if authentication fail: that is, when sasl is not required. So it appears 
> > to me that first, the semantic of 'authentication success' is not very 
> > clearly defined, and a clarification might be worth it; and secondly, it 
> > might be better to clarify what the caller should use to decide an 
> > authentication is a success or not. Since NullQuorumAuthServer will return 
> > false, a caller of the API has to check both the return code and catch the 
> > SaslException to decide an authentication is failed.
> >     
> >     So I am thinking updating the documentation with something like:
> >     
> >     @return true in these cases: 1. after successfully authenticating the 
> > quorum client when sasl is required; or
> >     2. when sasl is not required.
> >     Will return false if authentication failed.
> >     
> >     @throws SaslException When authentication failed. Caller should catch 
> > this exception which declares failing of an authentication.
> >     
> >     Alternatively, we could enforce that the interface authenticate will 
> > return true in all cases when authentication succeeds, and never return 
> > false. A failed authentication is materialized in the format of a 
> > SaslException, rather than a return code.
> 
> Rakesh R wrote:
>     Modified the interface "public void authenticate(Socket sock, 
> DataInputStream din)". Please take a look at it. thanks!

LGTM.


- Michael


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/47354/#review134426
-----------------------------------------------------------


On June 5, 2016, 7:56 a.m., Rakesh R wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/47354/
> -----------------------------------------------------------
> 
> (Updated June 5, 2016, 7:56 a.m.)
> 
> 
> Review request for zookeeper, fpj, Ivan Kelly, Patrick Hunt, and Raul 
> Gutierrez Segales.
> 
> 
> Bugs: ZOOKEEPER-1045
>     https://issues.apache.org/jira/browse/ZOOKEEPER-1045
> 
> 
> Repository: zookeeper-git
> 
> 
> Description
> -------
> 
> Quorum mutual authentication using SASL mechanism - Digest/Kerberos
> 
> 
> Diffs
> -----
> 
>   build.xml ab254b2 
>   ivy.xml 95b0e5a 
>   src/java/main/org/apache/zookeeper/Login.java aaa220c 
>   src/java/main/org/apache/zookeeper/client/ZooKeeperSaslClient.java 21ef0fa 
>   src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java 71870ce 
>   
> src/java/main/org/apache/zookeeper/server/auth/SaslServerCallbackHandler.java 
> 2fbd6ed 
>   src/java/main/org/apache/zookeeper/server/quorum/Leader.java 40c6748 
>   src/java/main/org/apache/zookeeper/server/quorum/Learner.java c73a8ee 
>   src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java 
> 8a748c7 
>   src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java 
> 20e5f16 
>   src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java 2f0f21b 
>   src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java 
> 8ae820d 
>   src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerMain.java 
> e9c8007 
>   
> src/java/main/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthClient.java
>  PRE-CREATION 
>   
> src/java/main/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthServer.java
>  PRE-CREATION 
>   src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuth.java 
> PRE-CREATION 
>   src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuthClient.java 
> PRE-CREATION 
>   src/java/main/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java 
> PRE-CREATION 
>   src/java/main/org/apache/zookeeper/server/quorum/auth/README.md 
> PRE-CREATION 
>   
> src/java/main/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthClient.java
>  PRE-CREATION 
>   
> src/java/main/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthServer.java
>  PRE-CREATION 
>   src/java/main/org/apache/zookeeper/util/SecurityUtils.java PRE-CREATION 
>   src/java/test/data/kerberos/minikdc-krb5.conf PRE-CREATION 
>   src/java/test/data/kerberos/minikdc.ldiff PRE-CREATION 
>   src/java/test/org/apache/zookeeper/server/quorum/CnxManagerTest.java 
> 831d3ed 
>   
> src/java/test/org/apache/zookeeper/server/quorum/FLEBackwardElectionRoundTest.java
>  c1259d1 
>   src/java/test/org/apache/zookeeper/server/quorum/FLECompatibilityTest.java 
> 72e4fc9 
>   src/java/test/org/apache/zookeeper/server/quorum/FLEDontCareTest.java 
> a4c0cb0 
>   src/java/test/org/apache/zookeeper/server/quorum/FLELostMessageTest.java 
> 39a53ca 
>   src/java/test/org/apache/zookeeper/server/quorum/LearnerTest.java 2ae57ce 
>   src/java/test/org/apache/zookeeper/server/quorum/QuorumCnxManagerTest.java 
> PRE-CREATION 
>   src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerTestBase.java 
> ef552db 
>   src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java ab8ce42 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/KerberosSecurityTestcase.java
>  PRE-CREATION 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/KerberosTestUtils.java 
> PRE-CREATION 
>   src/java/test/org/apache/zookeeper/server/quorum/auth/MiniKdc.java 
> PRE-CREATION 
>   src/java/test/org/apache/zookeeper/server/quorum/auth/MiniKdcTest.java 
> PRE-CREATION 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/QuorumAuthTestBase.java 
> PRE-CREATION 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/QuorumAuthUpgradeTest.java
>  PRE-CREATION 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/QuorumDigestAuthTest.java
>  PRE-CREATION 
>   
> src/java/test/org/apache/zookeeper/server/quorum/auth/QuorumKerberosAuthTest.java
>  PRE-CREATION 
>   src/java/test/org/apache/zookeeper/test/FLEPredicateTest.java 8088505 
>   src/zookeeper.jute 6521e54 
> 
> Diff: https://reviews.apache.org/r/47354/diff/
> 
> 
> Testing
> -------
> 
> Added unit test cases to verify the changes.
> 
> 
> Thanks,
> 
> Rakesh R
> 
>

Reply via email to