Example usage for org.apache.hadoop.security.alias CredentialProvider getAliases

List of usage examples for org.apache.hadoop.security.alias CredentialProvider getAliases

Introduction

In this page you can find the example usage for org.apache.hadoop.security.alias CredentialProvider getAliases.

Prototype

public abstract List<String> getAliases() throws IOException;

Source Link

Document

Get the aliases for all credentials.

Usage

From source file:org.apache.ranger.credentialapi.CredentialReader.java

License:Apache License

public static String getDecryptedString(String CrendentialProviderPath, String alias) {
    String credential = null;//  w ww  .  ja  va 2  s  .c  om
    try {
        if (CrendentialProviderPath == null || alias == null || CrendentialProviderPath.trim().isEmpty()
                || alias.trim().isEmpty()) {
            return null;
        }
        char[] pass = null;
        Configuration conf = new Configuration();
        String crendentialProviderPrefixJceks = JavaKeyStoreProvider.SCHEME_NAME + "://file";
        String crendentialProviderPrefixLocalJceks = "localjceks://file";
        crendentialProviderPrefixJceks = crendentialProviderPrefixJceks.toLowerCase();
        CrendentialProviderPath = CrendentialProviderPath.trim();
        alias = alias.trim();
        if (CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixJceks)
                || CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalJceks)) {
            conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
                    //UserProvider.SCHEME_NAME + ":///," +
                    CrendentialProviderPath);
        } else {
            if (CrendentialProviderPath.startsWith("/")) {
                conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
                        //UserProvider.SCHEME_NAME + ":///," +
                        JavaKeyStoreProvider.SCHEME_NAME + "://file" + CrendentialProviderPath);
            } else {
                conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
                        //UserProvider.SCHEME_NAME + ":///," +
                        JavaKeyStoreProvider.SCHEME_NAME + "://file/" + CrendentialProviderPath);
            }
        }
        List<CredentialProvider> providers = CredentialProviderFactory.getProviders(conf);
        List<String> aliasesList = new ArrayList<String>();
        CredentialProvider.CredentialEntry credEntry = null;
        for (CredentialProvider provider : providers) {
            //System.out.println("Credential Provider :" + provider);
            aliasesList = provider.getAliases();
            if (aliasesList != null && aliasesList.contains(alias.toLowerCase())) {
                credEntry = null;
                credEntry = provider.getCredentialEntry(alias);
                pass = credEntry.getCredential();
                if (pass != null && pass.length > 0) {
                    credential = String.valueOf(pass);
                    break;
                }
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
        credential = null;
    }
    return credential;
}

From source file:org.apache.slider.client.SliderClient.java

License:Apache License

private void checkForCredentials(Configuration conf, ConfTree tree) throws IOException {
    if (tree.credentials == null || tree.credentials.size() == 0) {
        log.info("No credentials requested");
        return;//from   ww  w  .  j  a  v a 2  s.  co  m
    }

    for (Entry<String, List<String>> cred : tree.credentials.entrySet()) {
        String provider = cred.getKey();
        List<String> aliases = cred.getValue();
        if (aliases == null || aliases.size() == 0) {
            continue;
        }
        Configuration c = new Configuration(conf);
        c.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, provider);
        CredentialProvider credentialProvider = CredentialProviderFactory.getProviders(c).get(0);
        Set<String> existingAliases = new HashSet<String>(credentialProvider.getAliases());
        for (String alias : aliases) {
            if (!existingAliases.contains(alias.toLowerCase(Locale.ENGLISH))) {
                throw new IOException("Specified credentials have not been " + "initialized in provider "
                        + provider + ": " + alias);
            }
        }
    }
}

From source file:org.apache.slider.server.services.security.AbstractSecurityStoreGenerator.java

License:Apache License

protected String getStorePassword(Map<String, List<String>> credentials, MapOperations compOps, String role)
        throws SliderException, IOException {
    String password = getPassword(compOps);
    if (password == null) {
        // need to leverage credential provider
        String alias = getAlias(compOps);
        LOG.debug("Alias {} found for role {}", alias, role);
        if (alias == null) {
            throw new SliderException("No store password or credential provider " + "alias found");
        }//from w  w  w . jav a2  s  . c  o  m
        if (credentials.isEmpty()) {
            LOG.info("Credentials can not be retrieved for store generation since "
                    + "no CP paths are configured");
        }
        synchronized (this) {
            for (Map.Entry<String, List<String>> cred : credentials.entrySet()) {
                String provider = cred.getKey();
                Configuration c = new Configuration();
                c.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, provider);
                LOG.debug("Configured provider {}", provider);
                CredentialProvider cp = CredentialProviderFactory.getProviders(c).get(0);
                LOG.debug("Aliases: {}", cp.getAliases());
                char[] credential = c.getPassword(alias);
                if (credential != null) {
                    LOG.info("Credential found for role {}", role);
                    return String.valueOf(credential);
                }
            }
        }

        if (password == null) {
            LOG.info(
                    "No store credential found for alias {}.  " + "Generation of store for {} is not possible.",
                    alias, role);

        }
    }

    return password;

}