[
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