use of org.apache.curator.framework.AuthInfo in project xian by happyyangyuan.
the class TestFramework method testCreateACLMultipleAuths.
@Test
public void testCreateACLMultipleAuths() throws Exception {
// Add a few authInfos
List<AuthInfo> authInfos = new ArrayList<AuthInfo>();
authInfos.add(new AuthInfo("digest", "me1:pass1".getBytes()));
authInfos.add(new AuthInfo("digest", "me2:pass2".getBytes()));
CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder();
CuratorFramework client = builder.connectString(server.getConnectString()).authorization(authInfos).retryPolicy(new RetryOneTime(1)).build();
client.start();
try {
ACL acl = new ACL(ZooDefs.Perms.WRITE, ZooDefs.Ids.AUTH_IDS);
List<ACL> aclList = Lists.newArrayList(acl);
client.create().withACL(aclList).forPath("/test", "test".getBytes());
client.close();
// Try setting data with me1:pass1
client = builder.connectString(server.getConnectString()).authorization("digest", "me1:pass1".getBytes()).retryPolicy(new RetryOneTime(1)).build();
client.start();
try {
client.setData().forPath("/test", "test".getBytes());
} catch (KeeperException.NoAuthException e) {
Assert.fail("Auth failed");
}
client.close();
// Try setting data with me1:pass1
client = builder.connectString(server.getConnectString()).authorization("digest", "me2:pass2".getBytes()).retryPolicy(new RetryOneTime(1)).build();
client.start();
try {
client.setData().forPath("/test", "test".getBytes());
} catch (KeeperException.NoAuthException e) {
Assert.fail("Auth failed");
}
client.close();
// Try setting data with something:else
client = builder.connectString(server.getConnectString()).authorization("digest", "something:else".getBytes()).retryPolicy(new RetryOneTime(1)).build();
client.start();
try {
client.setData().forPath("/test", "test".getBytes());
Assert.fail("Should have failed with auth exception");
} catch (KeeperException.NoAuthException e) {
// expected
}
} finally {
CloseableUtils.closeQuietly(client);
}
}
use of org.apache.curator.framework.AuthInfo in project helios by spotify.
the class AgentService method setupZookeeperClient.
/**
* Create a Zookeeper client and create the control and state nodes if needed.
*
* @param config The service configuration.
*
* @return A zookeeper client.
*/
private ZooKeeperClient setupZookeeperClient(final AgentConfig config, final String id, final CountDownLatch zkRegistrationSignal) {
ACLProvider aclProvider = null;
List<AuthInfo> authorization = null;
final String agentUser = config.getZookeeperAclAgentUser();
final String agentPassword = config.getZooKeeperAclAgentPassword();
final String masterUser = config.getZookeeperAclMasterUser();
final String masterDigest = config.getZooKeeperAclMasterDigest();
if (!isNullOrEmpty(agentPassword)) {
if (isNullOrEmpty(agentUser)) {
throw new HeliosRuntimeException("Agent username must be set if a password is set");
}
authorization = Lists.newArrayList(new AuthInfo("digest", String.format("%s:%s", agentUser, agentPassword).getBytes()));
}
if (config.isZooKeeperEnableAcls()) {
if (isNullOrEmpty(agentUser) || isNullOrEmpty(agentPassword)) {
throw new HeliosRuntimeException("ZooKeeper ACLs enabled but agent username and/or password not set");
}
if (isNullOrEmpty(masterUser) || isNullOrEmpty(masterDigest)) {
throw new HeliosRuntimeException("ZooKeeper ACLs enabled but master username and/or digest not set");
}
aclProvider = heliosAclProvider(masterUser, masterDigest, agentUser, digest(agentUser, agentPassword));
}
final RetryPolicy zooKeeperRetryPolicy = new ExponentialBackoffRetry(1000, 3);
final CuratorFramework curator = new CuratorClientFactoryImpl().newClient(config.getZooKeeperConnectionString(), config.getZooKeeperSessionTimeoutMillis(), config.getZooKeeperConnectionTimeoutMillis(), zooKeeperRetryPolicy, aclProvider, authorization);
final ZooKeeperClient client = new DefaultZooKeeperClient(curator, config.getZooKeeperClusterId());
client.start();
// Register the agent
final AgentZooKeeperRegistrar agentZooKeeperRegistrar = new AgentZooKeeperRegistrar(config.getName(), id, config.getZooKeeperRegistrationTtlMinutes(), new SystemClock());
zkRegistrar = ZooKeeperRegistrarService.newBuilder().setZooKeeperClient(client).setZooKeeperRegistrar(agentZooKeeperRegistrar).setZkRegistrationSignal(zkRegistrationSignal).build();
return client;
}
Aggregations