use of com.woorea.openstack.keystone.api.TokensResource in project AJSC by att.
the class AbstractOpenStackIdentityService method authenticate.
/**
* @see com.att.cdp.zones.IdentityService#authenticate(java.lang.String, java.lang.String)
*/
@SuppressWarnings("nls")
@Override
public void authenticate(String principal, String credential) throws IllegalArgumentException, ZoneException {
OpenStackContext context = (OpenStackContext) getContext();
checkPrincipal(principal);
checkCredential(credential);
if (!context.isLoggedIn()) {
try {
keystoneUrl = context.getProperties().getProperty(ContextFactory.PROPERTY_IDENTITY_URL);
tenantName = context.getProperties().getProperty(ContextFactory.PROPERTY_TENANT);
/*
* DH868g: Allow the specification of a client connector to override the default mechanism of the
* service loader. This is needed to support use within an OSGi container.
*/
keystone = new Keystone(keystoneUrl, context.getClientConnector());
/*
* dh868g: configure the client object to set any defined proxy and trusted host list
*/
String proxyHost = context.getProperties().getProperty(ContextFactory.PROPERTY_PROXY_HOST);
String proxyPort = context.getProperties().getProperty(ContextFactory.PROPERTY_PROXY_PORT);
String trustedHosts = context.getProperties().getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS, "");
if (proxyHost != null && proxyHost.length() > 0) {
getKeystone().getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_HOST, proxyHost);
getKeystone().getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_PORT, proxyPort);
}
if (trustedHosts != null) {
getKeystone().getProperties().setProperty(com.woorea.openstack.common.client.Constants.TRUST_HOST_LIST, trustedHosts);
}
// access with unscoped token
Authentication authentication = new UsernamePassword(principal, credential);
TokensResource tokens = getKeystone().tokens();
TokensResource.Authenticate authenticate = tokens.authenticate(authentication);
authenticate = authenticate.withTenantName(tenantName);
access = authenticate.execute();
expiresLocal = getLocalExpiration(access);
tenant = new OpenStackTenant(context, access.getToken().getTenant());
context.setTenant(tenant);
tokenProvider = new OpenStackSimpleTokenProvider(access.getToken().getId());
getKeystone().setTokenProvider(tokenProvider);
List<Access.Service> services = access.getServiceCatalog();
OpenStackContext osContext = context;
osContext.registerServices(services);
// Testing that we can access tenants already
Tenants tenantList = getKeystone().tenants().list().execute();
for (com.woorea.openstack.keystone.model.Tenant t : tenantList.getList()) {
System.out.println(t);
}
} catch (OpenStackResponseException e) {
throw new AuthenticationException(EELFResourceManager.format(OSMsg.PAL_OS_FAILED_PROVIDER_AUTHENTICATION, e, principal, tenantName));
} catch (OpenStackConnectException e) {
throw new ContextConnectionException(EELFResourceManager.format(OSMsg.PAL_OS_CONNECTION_FAILED, "Identity", keystoneUrl), e);
}
}
}
Aggregations