2013-06-19 3 views
1

У меня, похоже, очень неприятная проблема с Zookeeper. Мне удалось создать и скомпилировать собственный поставщик аутентификации. Этот провайдер устанавливается в конфигурации, как это:Ошибка проверки подлинности Zookeeper

authProvider.1=io.whatever.zookeeper.auth.ChefZkAuth 

мне удалось установить ACL на корневой znode, теперь я ничего не вижу на моем кластере без аутентификации, это то, что я хотел. Моя проблема заключается в том, что при попытке аутентификации, я получаю:

2013-06-19 19:38:50,928 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - got auth packet /127.0.0.1:45518 
2013-06-19 19:38:50,934 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - >>>>>>>>>>>>>>>>>> /127.0.0.1 is connecting... 
2013-06-19 19:38:50,934 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Caught runtime exception from AuthenticationProvider: chef due to java.lang.UnsupportedOperationException 
2013-06-19 19:38:50,935 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Authentication failed for scheme: chef 

Так, кажется, что мой провайдер быть вызван. Но по какой-то причине он не загружается Zookeeper при запуске. Это то, что Zookeeper говорит мне при запуске:

[email protected]:/opt/zookeeper/current/bin$ ./zkServer.sh start-foreground 
JMX enabled by default 
Using config: /opt/zookeeper/current/bin/../conf/zoo.cfg 
2013-06-19 19:53:24,421 [myid:] - INFO [main:[email protected]] - Reading configuration from: /opt/zookeeper/current/bin/../conf/zoo.cfg 
2013-06-19 19:53:24,428 [myid:] - INFO [main:[email protected]] - autopurge.snapRetainCount set to 3 
2013-06-19 19:53:24,429 [myid:] - INFO [main:[email protected]] - autopurge.purgeInterval set to 0 
2013-06-19 19:53:24,430 [myid:] - INFO [main:[email protected]] - Purge task is not scheduled. 
2013-06-19 19:53:24,430 [myid:] - WARN [main:[email protected]] - Either no config or no quorum defined in config, running in standalone mode 
2013-06-19 19:53:24,452 [myid:] - INFO [main:[email protected]] - Reading configuration from: /opt/zookeeper/current/bin/../conf/zoo.cfg 
2013-06-19 19:53:24,463 [myid:] - INFO [main:[email protected]] - Starting server 
2013-06-19 19:53:24,511 [myid:] - INFO [main:[email protected]] - Server environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT 
2013-06-19 19:53:24,512 [myid:] - INFO [main:[email protected]] - Server environment:host.name=radek-virtual-machine 
2013-06-19 19:53:24,513 [myid:] - INFO [main:[email protected]] - Server environment:java.version=1.7.0_21 
2013-06-19 19:53:24,513 [myid:] - INFO [main:[email protected]] - Server environment:java.vendor=Oracle Corporation 
2013-06-19 19:53:24,514 [myid:] - INFO [main:[email protected]] - Server environment:java.home=/usr/lib/jvm/java-7-openjdk-amd64/jre 
2013-06-19 19:53:24,515 [myid:] - INFO [main:[email protected]] - Server environment:java.class.path=/opt/zookeeper/current/bin/../build/classes:/opt/zookeeper/current/bin/../build/lib/*.jar:/opt/zookeeper/current/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/current/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/current/bin/../lib/netty-3.2.2.Final.jar:/opt/zookeeper/current/bin/../lib/log4j-1.2.15.jar:/opt/zookeeper/current/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/current/bin/../lib/ChefZkAuth-1.0-SNAPSHOT.jar:/opt/zookeeper/current/bin/../zookeeper-3.4.5.jar:/opt/zookeeper/current/bin/../src/java/lib/*.jar:/opt/zookeeper/current/bin/../conf: 
2013-06-19 19:53:24,515 [myid:] - INFO [main:[email protected]] - Server environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib 
2013-06-19 19:53:24,516 [myid:] - INFO [main:[email protected]] - Server environment:java.io.tmpdir=/tmp 
2013-06-19 19:53:24,520 [myid:] - INFO [main:[email protected]] - Server environment:java.compiler=<NA> 
2013-06-19 19:53:24,521 [myid:] - INFO [main:[email protected]] - Server environment:os.name=Linux 
2013-06-19 19:53:24,521 [myid:] - INFO [main:[email protected]] - Server environment:os.arch=amd64 
2013-06-19 19:53:24,522 [myid:] - INFO [main:[email protected]] - Server environment:os.version=3.8.0-19-generic 
2013-06-19 19:53:24,523 [myid:] - INFO [main:[email protected]] - Server environment:user.name=radek 
2013-06-19 19:53:24,524 [myid:] - INFO [main:[email protected]] - Server environment:user.home=/home/radek 
2013-06-19 19:53:24,525 [myid:] - INFO [main:[email protected]] - Server environment:user.dir=/opt/zookeeper/zookeeper-3.4.5/bin 
2013-06-19 19:53:24,548 [myid:] - INFO [main:[email protected]] - tickTime set to 1000 
2013-06-19 19:53:24,550 [myid:] - INFO [main:[email protected]] - minSessionTimeout set to -1 
2013-06-19 19:53:24,551 [myid:] - INFO [main:[email protected]] - maxSessionTimeout set to -1 
2013-06-19 19:53:24,636 [myid:] - INFO [main:[email protected]] - successfully logged in. 
2013-06-19 19:53:24,654 [myid:] - INFO [main:[email protected]] - binding to port 0.0.0.0/0.0.0.0:2181 
2013-06-19 19:53:24,692 [myid:] - INFO [main:[email protected]] - Reading snapshot /tmp/zookeeper/version-2/snapshot.14 
2013-06-19 19:53:24,720 [myid:] - INFO [main:[email protected]] - Snapshotting: 0x14 to /tmp/zookeeper/version-2/snapshot.14 
2013-06-19 19:53:26,689 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Accepted socket connection from /127.0.0.1:45648 
2013-06-19 19:53:26,789 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Connection request from old client /127.0.0.1:45648; will be dropped if server is in r-o mode 
2013-06-19 19:53:26,791 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Client attempting to renew session 0x13f5d7d94460003 at /127.0.0.1:45648 
2013-06-19 19:53:26,797 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:[email protected]] - Established session 0x13f5d7d94460003 with negotiated timeout 10000 for client /127.0.0.1:45648 

А вот мой провайдер:

package io.whatever.zookeeper.auth; 

import org.apache.log4j.Logger; 
import org.apache.zookeeper.data.Id; 
import org.apache.zookeeper.server.ServerCnxn; 
import org.apache.zookeeper.KeeperException; 
import org.apache.zookeeper.server.auth.AuthenticationProvider; 

public class ChefZkAuth implements AuthenticationProvider { 

    private static Logger LOGGER = Logger.getLogger(ChefZkAuth.class); 

    public String getScheme() { 
     return "chef"; 
    } 

    public KeeperException.Code 
    handleAuthentication(ServerCnxn cnxn, byte[] authData) 
    { 
     String id = cnxn.getRemoteSocketAddress().getAddress().toString(); 
     LOGGER.info(" >>>>>>>>>>>>>>>>>> " + id + " is connecting..."); 
     cnxn.getAuthInfo().add(new Id(getScheme(), id)); 
     return KeeperException.Code.OK; 
    } 

    public boolean matches(String id, String aclExpr) { 
     return true; 
    } 

    public boolean isAuthenticated() { 
     return true; 
    } 

    public boolean isValid(String id) { 
     return true; 
    } 
} 

ChefZkAuth-1.0-SNAPSHOT.jar находится в пути к классам. Он используется во время процесса auth, но он не зарегистрирован.

Что я делаю неправильно? В чем причина того, что поставщик не загружается во время запуска сервера? Я использую Zookeeper 3.4.5.

ответ

0

Кажется, я уже где-то, когда я удалить эту строку из моего провайдера:

cnxn.getAuthInfo().add(new Id(getScheme(), id)); 

он начинает работать. Я думаю, этого достаточно для того, что мне нужно.

Смежные вопросы