package org.openstack.atlas.api.auth;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openstack.atlas.cfg.PublicApiServiceConfigurationKeys;
import org.openstack.atlas.api.exceptions.MissingFieldException;
import org.openstack.atlas.api.filters.helpers.StringUtilities;
import org.openstack.atlas.cfg.Configuration;
import org.openstack.identity.client.client.IdentityClient;
import org.openstack.identity.client.fault.IdentityFault;
import org.openstack.identity.client.token.AuthenticateResponse;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
public class AuthTokenValidator {
private static final Log LOG = LogFactory.getLog(AuthTokenValidator.class);
public IdentityClient identityClient;
private Configuration configuration;
public AuthTokenValidator(Configuration cfg) throws MalformedURLException, URISyntaxException, IdentityFault {
this.configuration = cfg;
if (cfg.hasKeys(PublicApiServiceConfigurationKeys.identity_auth_url,
PublicApiServiceConfigurationKeys.identity_user,
PublicApiServiceConfigurationKeys.identity_pass)) {
LOG.info("Auth URI from local conf: " + configuration.getString(PublicApiServiceConfigurationKeys.identity_auth_url));
identityClient = new IdentityClient(configuration.getString(PublicApiServiceConfigurationKeys.identity_auth_url));
} else {
LOG.error(StringUtilities.AUTH_INIT_FAIL);
throw new MissingFieldException(StringUtilities.AUTH_INIT_FAIL);
}
}
public AuthenticateResponse validate(String userToken, String tenantId) throws URISyntaxException, IdentityFault {
LOG.info("Within validate ... about to call client authenticate...");
AuthenticateResponse admin = identityClient.authenticateUsernamePassword(configuration.getString(PublicApiServiceConfigurationKeys.identity_user), configuration.getString(PublicApiServiceConfigurationKeys.identity_pass));
return identityClient.validateToken(admin.getToken().getId(), userToken, tenantId);
}
}