/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vipr; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.emc.storageos.coordinator.client.service.CoordinatorClient; import com.emc.storageos.db.client.model.EncryptionProvider; import com.emc.vipr.client.AuthClient; @Component public class ViPRProxyUser { private static final String PROXY_USER = "proxyuser"; private static final String PROXY_USER_PASSWORD_PROPERTY = "system_proxyuser_encpassword"; // NOSONAR ("False positive, field does not // store a password”) @Autowired private CoordinatorClient coordinatorClient; @Autowired @Qualifier("encryptionProvider") private EncryptionProvider encryptionProvider; String login(AuthClient client) { String encryptedPassword = getProperty(PROXY_USER_PASSWORD_PROPERTY); if (StringUtils.isBlank(encryptedPassword)) { throw new IllegalArgumentException("Proxy user password is not set"); } String password = encryptionProvider.decrypt(Base64.decodeBase64(encryptedPassword)); client.getClient().setUsername(PROXY_USER); client.getClient().setPassword(password); return client.login(PROXY_USER, password); } private String getProperty(String name) { if (coordinatorClient.getPropertyInfo() != null) { return coordinatorClient.getPropertyInfo().getProperty(name); } return null; } public CoordinatorClient getCoordinatorClient() { return coordinatorClient; } public void setCoordinatorClient(CoordinatorClient coordinatorClient) { this.coordinatorClient = coordinatorClient; } public EncryptionProvider getEncryptionProvider() { return encryptionProvider; } public void setEncryptionProvider(EncryptionProvider encryptionProvider) { this.encryptionProvider = encryptionProvider; } }