[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eugene Koontz updated ZOOKEEPER-938:
------------------------------------

    Attachment: ZOOKEEPER-938.patch

-Server-side SASL negotiation with client moved from 
 FinalRequestProcessor to ZooKeeperServer
 (Thanks to Benjamin Reed for recommending this in 
  his review).

-Removed SASL-specific Zookeeper client states:
   Back to using the existing set of client states 
   {CONNECTING, ASSOCIATING, etc}
   (Thanks to Benjamin Reed for recommending this in 
    his review).

-Moved SASL-related functionality out of ServerCnxnFactory.
   (Thanks to Benjamin Reed for recommending this in 
    his review).

-Removed requireClientAuthScheme: instead using 
   zookeeper.maintain_connection_despite_sasl_failure property to 
   accomplish the same thing (if 
maintain_connection_despite_sasl_failure=false, 
   then server will shut down client. Benjamin mentioned in his review
   that requireClientAuthScheme is general functionality and would be
   appropriate, but I thought that might better be a separate JIRA issue
   if so.

-Removed extra added renewJaasLoginInterval parameter to various constructors:
 instead, using system property-checking at the appropriate points within the
 relevant SASL- and Kerberos- related classes.
  (Thanks to Benjamin Reed for recommending this in his review).

-Kerberos ticket cache renewal fix:
   Uses the Shell class from Hadoop. The source file was copied from 
   Hadoop core with minor modifications detailed in comments after the
   Apache license.

-More robust Kerberos principal parsing:
   Uses the KerberosName class from Hadoop's security branch. The source
   file was copied from Hadoop with minor modifications detailed in 
   comments after the Apache license.

-More flexible Kerberos principal-to-Zookeeper username translation

    The following system properties are supported:

     zookeeper.kerberos.removeHostFromPrincipal
       If this is set to true, then Kerberos principals of the form: 
       user/host@REALM will be converted to user@REALM.

     zookeeper.kerberos.removeRealmFromPrincipal
       If this is set to true, then Kerberos principals of the forms:
       user/host@REALM and user@REALM will be converted to 
       user/host and user respectively.

      If both removeHostFromPrincipal and removeRealmFromPrincipal are true,
      then Kerberos principals of the forms: user/host@REALM and user@REALM
      will both be converted to user.
     
     zookeeper.superUser
      If a value is provided, and Kerberos is used, then the provided value will
      be used as the superuser. This allows one to use a Kerberos principal 
such as:
      "user/zookeeperadmin@REALM" as the Zookeeper super user. The default 
value "super"
      will be used otherwise.

      


> Support Kerberos authentication of clients.
> -------------------------------------------
>
>                 Key: ZOOKEEPER-938
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-938
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: java client, server
>            Reporter: Eugene Koontz
>            Assignee: Eugene Koontz
>             Fix For: 3.4.0, 3.5.0
>
>         Attachments: NIOServerCnxn.patch, ZOOKEEPER-938.patch, 
> ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, 
> ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, 
> ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, 
> ZOOKEEPER-938.patch, ZOOKEEPER-938.patch, jaas.conf, sasl.patch
>
>
> Support Kerberos authentication of clients. 
> The following usage would let an admin use Kerberos authentication to assign 
> ACLs to authenticated clients.
> 1. Admin logs into zookeeper (not necessarily through Kerberos however). 
> 2. Admin decides that a new node called '/mynode' should be owned by the user 
> 'zkclient' and have full permissions on this.
> 3. Admin does: zk> create /mynode content sasl:[email protected]:cdrwa
> 4. User 'zkclient' logins to kerberos using the command line utility 'kinit'.
> 5. User connects to zookeeper server using a Kerberos-enabled version of 
> zkClient (ZookeeperMain).
> 6. Behind the scenes, the client and server exchange authentication 
> information. User is now authenticated as 'zkclient'.
> 7. User accesses /mynode with permissions 'cdrwa'.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to