ZooKeeper kerberos 客户端认证

October 31, 2018

Hadoop中的ZooKeeper 添加了kerberos 认证,写的代码需要操作Hadoop中的ZooKeeper,因此代码需要进行认证才能操作ZooKeeper

spring boot 项目进行认证

项目不需要进行任何修改和添加,在启动参数中加入认证即可,认证方式和Hbasekerberos认证不一样,所以实现方式也不一样。

# -Dsun.security.krb5.debug=true 开启认证调试日志,这样有助于分析认证失败原因,可以达到事半功倍的效果
# -Djava.security.auth.login.config=./jaas.conf 这是zookeeper的认证文件
java -jar -Djava.security.auth.login.config=./jaas.conf -Dsun.security.krb5.debug=true demo.jar

tomcat 项目进行认证

# tomcat 进行认证需要进行配置到 catalina.sh 中
CATALINA_OPTS="$CATALINA_OPTS-Djava.security.auth.login.config=./jaas.conf"
CATALINA_OPTS="$CATALINA_OPTS -Dsun.security.krb5.debug=true"

重启项目即可进行认证。

ZooKeeper kerberos

在使用jaas.conf文件中要注意,此文件分为服务端和客户端的配置文件,不能给错了,如果使用错误也是不能进行认证,keytab也是不一样的,用错了也是不能进行认证通过的。

# 服务端
Server {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/cdh1@JAVACHEN.COM";
};

# 客户端
Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zkcli.keytab"
  storeKey=true
  useTicketCache=false
  principal="zkcli@JAVACHEN.COM";
};

参考


LRF 记录学习、生活的点滴