示例#1
0
        public static void GetACL()
        {
            Stat stat = new Stat();
            var  data = zk.GetACL("/test", stat); // 第二个参数不允许为空,为空时会报错

            // ip 和 world 不需要也不能添加 AddAuthInfo
            zk.AddAuthInfo("digest", "user1:12345".GetBytes());
            var data1 = System.Text.Encoding.Default.GetString(zk.GetData("/test", false, stat));
        }
示例#2
0
        static void Main(string[] args)
        {
            var zookeeper = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 5), null);

            //添加权限信息后创建的节点就 受到了权限控制
            zookeeper.AddAuthInfo("digest", "foo:true".GetBytes());
            zookeeper.Create(PATH, "init".GetBytes(), Ids.CREATOR_ALL_ACL, CreateMode.Ephemeral);

            try
            {
                var zooKeeper2 = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 5), null);
                //这儿会抛出异常,无权限访问
                zooKeeper2.GetData(PATH, false, null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.WriteLine();
            }


            try
            {
                var zooKeeper3 = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 5), null);
                zooKeeper3.AddAuthInfo("digest", "foo:false".GetBytes());
                zooKeeper3.GetData(PATH, false, null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.WriteLine();
            }

            try
            {
                var zooKeeper4 = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 5), null);
                zooKeeper4.AddAuthInfo("digest5555555", "foo:true".GetBytes());
                zooKeeper4.GetData(PATH, false, null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            zookeeper.GetData(PATH, null, null);
            zookeeper.Dispose();

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure(new FileInfo("zookeeperDemo.log4net"));

            zookeeper = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 10), new ZooKeeper_Auth_Usage());
            zookeeper.AddAuthInfo("digest", "taokeeper:true".GetBytes());

            manualWaitHandler.WaitOne();

            //ASYNC_VerifyZookeeper();

            string path     = "/zk-book";
            var    testStat = zookeeper.Exists(path, false);

            if (testStat == null)
            {
                zookeeper.Create(path, "123".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Ephemeral);
            }


            var pathData = zookeeper.GetData(path, true, null);

            Console.WriteLine("The path's data(watched):{0}", System.Text.UTF8Encoding.UTF8.GetString(pathData));

            //
            var errorzk = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 10), new ZooKeeper_Auth_Usage());

            errorzk.AddAuthInfo("digest", "taokeeper:error".GetBytes());

            manualWaitHandler.WaitOne();

            var tempdata = errorzk.GetData(path, true, null);

            Console.WriteLine("The path's data(watched):{0}", System.Text.UTF8Encoding.UTF8.GetString(tempdata));

            Console.ReadLine();
        }
        public void testRootAcl()
        {
            ZooKeeper zk = CreateClient();

            // set auth using digest
            zk.AddAuthInfo("digest", Encoding.UTF8.GetBytes("pat:test"));
            zk.SetACL("/", Ids.CREATOR_ALL_ACL, -1);
            zk.GetData("/", false, null);
            zk.Dispose();

            // verify no access
            zk = CreateClient();
            try
            {
                zk.GetData("/", false, null);
                Assert.Fail("validate auth");
            }
            catch (KeeperException.NoAuthException e)
            {
                // expected
            }
            string path = "/" + Guid.NewGuid() + "apps";

            try
            {
                zk.Create(path, null, Ids.CREATOR_ALL_ACL, CreateMode.Persistent);
                Assert.Fail("validate auth");
            }
            catch (KeeperException.InvalidACLException e)
            {
                // expected
            }
            zk.AddAuthInfo("digest", Encoding.UTF8.GetBytes("world:anyone"));
            try
            {
                zk.Create(path, null, Ids.CREATOR_ALL_ACL,
                          CreateMode.Persistent);
                Assert.Fail("validate auth");
            }
            catch (KeeperException.NoAuthException e)
            {
                // expected
            }
            zk.Dispose();
            // verify access using original auth
            zk = CreateClient();
            zk.AddAuthInfo("digest", Encoding.UTF8.GetBytes("pat:test"));
            zk.GetData("/", false, null);
            zk.Create(path, null, Ids.CREATOR_ALL_ACL, CreateMode.Persistent);
            zk.Delete(path, -1);
            // reset acl (back to open) and verify accessible again
            zk.SetACL("/", Ids.OPEN_ACL_UNSAFE, -1);
            zk.Dispose();
            zk = CreateClient();
            zk.GetData("/", false, null);
            zk.Create(path, null, Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
            try
            {
                zk.Create(path, null, Ids.CREATOR_ALL_ACL, CreateMode.Persistent);
                Assert.Fail("validate auth");
            }
            catch (KeeperException.InvalidACLException e)
            {
                // expected
            }
            zk.Delete(path, -1);
            zk.AddAuthInfo("digest", Encoding.UTF8.GetBytes("world:anyone"));
            zk.Create(path, null, Ids.CREATOR_ALL_ACL, CreateMode.Persistent);
            zk.Dispose();
            zk = CreateClient();
            zk.Delete(path, -1);
        }