Search in sources :

Example 1 with OpenStackSimpleTokenProvider

use of com.woorea.openstack.base.client.OpenStackSimpleTokenProvider 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);
        }
    }
}
Also used : OpenStackTenant(com.att.cdp.openstack.model.OpenStackTenant) AuthenticationException(com.att.cdp.exceptions.AuthenticationException) CommonIdentityService(com.att.cdp.openstack.CommonIdentityService) Tenants(com.woorea.openstack.keystone.model.Tenants) TokensResource(com.woorea.openstack.keystone.api.TokensResource) UsernamePassword(com.woorea.openstack.keystone.model.authentication.UsernamePassword) OpenStackContext(com.att.cdp.openstack.OpenStackContext) ContextConnectionException(com.att.cdp.exceptions.ContextConnectionException) Keystone(com.woorea.openstack.keystone.Keystone) OpenStackSimpleTokenProvider(com.woorea.openstack.base.client.OpenStackSimpleTokenProvider) OpenStackResponseException(com.woorea.openstack.base.client.OpenStackResponseException) Authentication(com.woorea.openstack.keystone.model.Authentication) OpenStackConnectException(com.woorea.openstack.base.client.OpenStackConnectException)

Aggregations

AuthenticationException (com.att.cdp.exceptions.AuthenticationException)1 ContextConnectionException (com.att.cdp.exceptions.ContextConnectionException)1 CommonIdentityService (com.att.cdp.openstack.CommonIdentityService)1 OpenStackContext (com.att.cdp.openstack.OpenStackContext)1 OpenStackTenant (com.att.cdp.openstack.model.OpenStackTenant)1 OpenStackConnectException (com.woorea.openstack.base.client.OpenStackConnectException)1 OpenStackResponseException (com.woorea.openstack.base.client.OpenStackResponseException)1 OpenStackSimpleTokenProvider (com.woorea.openstack.base.client.OpenStackSimpleTokenProvider)1 Keystone (com.woorea.openstack.keystone.Keystone)1 TokensResource (com.woorea.openstack.keystone.api.TokensResource)1 Authentication (com.woorea.openstack.keystone.model.Authentication)1 Tenants (com.woorea.openstack.keystone.model.Tenants)1 UsernamePassword (com.woorea.openstack.keystone.model.authentication.UsernamePassword)1