zookeeper删除节点的权限_【ZooKeeper Notes 7】使用super身份对有权限的节点进行操作...

import java.util.ArrayList;

import java.util.List;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooDefs.Ids;

import org.apache.zookeeper.data.ACL;

import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;

/**

* Description: ZooKeeper-Authentication Test

* @author   nileader / nileader@gmail.com

* @Date     Jul 12, 2012

*/

public class DemoAuth2 implements Watcher {

final static String SERVER_LIST = "127.0.0.1:2181";

final static String PATH = "/yinshi_auth_test";

final static String PATH_DEL = "/yinshi_auth_test/will_be_del";

final static String authentication_type = "digest";

final static String correctAuthentication = "taokeeper:true";

final static String badAuthentication = "taokeeper:errorCode";

final static String superAuthentication = "super:yinshi.nc-1988";

static ZkClient zkClient = null;

public static void main( String[] args ) throws Exception {

System.out.println( DigestAuthenticationProvider.generateDigest( "super:yinshi.nc-1988" ) );

List acls = new ArrayList( 1 );

for ( ACL ids_acl : Ids.CREATOR_ALL_ACL ) {

acls.add( ids_acl );

}

try {

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, correctAuthentication.getBytes() );

} catch ( Exception e ) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

zkClient.createPersistent( PATH, acls, "init content" );

System.out.println( "使用授权key:" + correctAuthentication + "创建节点:" + PATH + ", 初始内容是: init content" );

} catch ( Exception e ) {

e.printStackTrace();

}

try {

zkClient.createPersistent( PATH_DEL, acls, "待删节点" );

System.out.println( "使用授权key:" + correctAuthentication + "创建节点:" + PATH_DEL + ", 初始内容是: init content" );

} catch ( Exception e ) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 获取数据

getDataByNoAuthentication();

getDataByBadAuthentication();

getDataByCorrectAuthentication();

getDataByBadAuthentication();

getDataBySuperAuthentication();

//

//      // 更新数据

//      updateDataByNoAuthentication();

//      updateDataByBadAuthentication();

//      updateDataByCorrectAuthentication();

//

//      // 获取数据

//      getDataByNoAuthentication();

//      getDataByBadAuthentication();

//      getDataByCorrectAuthentication();

//

//      //删除数据

//      deleteNodeByBadAuthentication();

//      deleteNodeByNoAuthentication();

//      deleteNodeByCorrectAuthentication();

//

//      deleteParent();

zkClient.close();

}

/** 获取数据:采用错误的密码 */

static void getDataByBadAuthentication() {

String prefix = "[使用错误的授权信息]";

try {

System.out.println( prefix + "获取数据:" + PATH );

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, badAuthentication.getBytes() );

System.out.println( prefix + "成功获取数据:" + zkClient.readData( PATH ) );

} catch ( Exception e ) {

System.err.println( prefix + "获取数据失败,原因:" + e.getMessage() );

}

}

/** 获取数据:不采用密码 */

static void getDataByNoAuthentication() {

String prefix = "[不使用任何授权信息]";

try {

System.out.println( prefix + "获取数据:" + PATH );

zkClient = new ZkClient( SERVER_LIST, 50000);

System.out.println( prefix + "成功获取数据:" + zkClient.readData( PATH ) );

} catch ( Exception e ) {

System.err.println( prefix + "获取数据失败,原因:" + e.getMessage() );

}

}

/** 采用正确的密码 */

static void getDataByCorrectAuthentication() {

String prefix = "[使用正确的授权信息]";

try {

System.out.println( prefix + "获取数据:" + PATH );

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, correctAuthentication.getBytes() );

System.out.println( prefix + "成功获取数据:" + zkClient.readData( PATH ) );

} catch ( Exception e ) {

System.out.println( prefix + "获取数据失败,原因:" + e.getMessage() );

}

}

/** 采用超级用户的密码 */

static void getDataBySuperAuthentication() {

String prefix = "[使用超级用户的授权信息]";

try {

System.out.println( prefix + "获取数据:" + PATH );

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, superAuthentication.getBytes() );

System.out.println( prefix + "成功获取数据:" + zkClient.readData( PATH ) );

} catch ( Exception e ) {

System.out.println( prefix + "获取数据失败,原因:" + e.getMessage() );

}

}

/**

* 更新数据:不采用密码

*/

static void updateDataByNoAuthentication() {

String prefix = "[不使用任何授权信息]";

System.out.println( prefix + "更新数据: " + PATH );

try {

zkClient = new ZkClient( SERVER_LIST, 50000);

if( zkClient.exists( PATH ) ){

zkClient.writeData( PATH, prefix );

System.out.println( prefix + "更新成功" );

}

} catch ( Exception e ) {

System.err.println( prefix + "更新失败,原因是:" + e.getMessage() );

}

}

/**

* 更新数据:采用错误的密码

*/

static void updateDataByBadAuthentication() {

String prefix = "[使用错误的授权信息]";

System.out.println( prefix + "更新数据:" + PATH );

try {

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, badAuthentication.getBytes() );

if( zkClient.exists( PATH ) ){

zkClient.writeData( PATH, prefix );

System.out.println( prefix + "更新成功" );

}

} catch ( Exception e ) {

System.err.println( prefix + "更新失败,原因是:" + e.getMessage() );

}

}

/**

* 更新数据:采用正确的密码

*/

static void updateDataByCorrectAuthentication() {

String prefix = "[使用正确的授权信息]";

System.out.println( prefix + "更新数据:" + PATH );

try {

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, correctAuthentication.getBytes() );

if( zkClient.exists( PATH ) ){

zkClient.writeData( PATH, prefix );

System.out.println( prefix + "更新成功" );

}

} catch ( Exception e ) {

System.err.println( prefix + "更新失败,原因是:" + e.getMessage() );

}

}

/**

* 不使用密码 删除节点

*/

static void deleteNodeByNoAuthentication() throws Exception {

String prefix = "[不使用任何授权信息]";

try {

System.out.println( prefix + "删除节点:" + PATH_DEL );

zkClient = new ZkClient( SERVER_LIST, 50000);

if( zkClient.exists( PATH_DEL ) ){

zkClient.delete( PATH_DEL );

System.out.println( prefix + "删除成功" );

}

} catch ( Exception e ) {

System.err.println( prefix + "删除失败,原因是:" + e.getMessage() );

}

}

/**

* 采用错误的密码删除节点

*/

static void deleteNodeByBadAuthentication() throws Exception {

String prefix = "[使用错误的授权信息]";

try {

System.out.println( prefix + "删除节点:" + PATH_DEL );

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, badAuthentication.getBytes() );

if( zkClient.exists( PATH_DEL ) ){

zkClient.delete( PATH_DEL );

System.out.println( prefix + "删除成功" );

}

} catch ( Exception e ) {

System.err.println( prefix + "删除失败,原因是:" + e.getMessage() );

}

}

/**

* 使用正确的密码删除节点

*/

static void deleteNodeByCorrectAuthentication() throws Exception {

String prefix = "[使用正确的授权信息]";

try {

System.out.println( prefix + "删除节点:" + PATH_DEL );

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, correctAuthentication.getBytes() );

if( zkClient.exists( PATH_DEL ) ){

zkClient.delete( PATH_DEL );

System.out.println( prefix + "删除成功" );

}

} catch ( Exception e ) {

System.out.println( prefix + "删除失败,原因是:" + e.getMessage() );

}

}

/**

* 使用正确的密码删除节点

*/

static void deleteParent() throws Exception {

try {

zkClient = new ZkClient( SERVER_LIST, 50000);

zkClient.addAuthInfo( authentication_type, correctAuthentication.getBytes() );

if( zkClient.exists( PATH ) ){

zkClient.delete( PATH );

}

} catch ( Exception e ) {

e.printStackTrace();

}

}

@Override

public void process( WatchedEvent event ) {

// TODO Auto-generated method stub

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值