River IQ

Read JCEKS Containing Secret Keys using java

  Ashish Kumar      java February 14, 2020
Image

package com.riveriq.db2con.driver;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.riveriq.exception.CustomException;

import com.riveriq.util.ReadJceks;


public class DB2Connection {

private Connection conn;

private static DB2Connection db2connection;

private static Logger LOGGER = LoggerFactory.getLogger(DB2Connection.class);

private DB2Connection() {

}

public Connection getConnection(Properties prop) throws SQLException, ClassNotFoundException, CustomException {

if (conn == null) {

//Class.forName(prop.getProperty(Constants.HIVEDRIVERNAME));

Class.forName(prop.getProperty(Constants.DBDRIVERNAME));

// jdbc:as400://mytestserver.corp.net:8476/testdb

String connectionURL = "jdbc:sqlserver" + "://" + prop.getProperty(Constants.DBHOST) + ":"

+ prop.getProperty(Constants.DBPORT) + ";database=" + prop.getProperty(Constants.DBNAME);


LOGGER.info(" Connection URL " + connectionURL);

String passwordreturn=ReadJceks.getPasswordFromJceks(prop.getProperty(Constants.JCEKSPATH),prop.getProperty(Constants.JCEKSALIASNAME));

if( passwordreturn == null)

{

LOGGER.info(" Not able to retrive the password from JCEKS PATH " + prop.getProperty(Constants.JCEKSPATH) + " using alias name" +

prop.getProperty(Constants.JCEKSALIASNAME));

throw new CustomException(" Password is empty , not able to retrive");

}

conn = DriverManager.getConnection(connectionURL, prop.getProperty(Constants.DBUSER),passwordreturn);

}

return conn;

}


public static DB2Connection getInstance() {

if (db2connection == null) {

db2connection = new DB2Connection();

}

return db2connection;

}


}


***********************

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.security.alias.CredentialProviderFactory;

import com.riveriq.driver.DB2Call;


public class ReadJceks {

public static String getPasswordFromJceks(String path, String aliasname) {

//Configuration configuration =DB2Call.configuration;

String alias = aliasname;

String jceksPath = path;

DB2Call.configuration.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, jceksPath);

String pass = null;

try {

char[] cred = DB2Call.configuration.getPassword(alias);

pass = new String(cred);


} catch (IOException e) {

e.printStackTrace();

}

return pass;

}

}


************************

drivername=com.microsoft.sqlserver.jdbc.SQLServerDriver


0 Comments

Be first to comment on this post.