All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.uiuc.ncsa.myproxy.MPSingleConnectionProvider Maven / Gradle / Ivy

package edu.uiuc.ncsa.myproxy;

import edu.uiuc.ncsa.security.core.Identifier;
import edu.uiuc.ncsa.security.core.exceptions.ConnectionException;
import edu.uiuc.ncsa.security.core.exceptions.GeneralException;
import edu.uiuc.ncsa.security.core.util.MyLoggingFacade;
import edu.uiuc.ncsa.security.util.pkcs.MyPKCS10CertRequest;

import javax.net.ssl.KeyManagerFactory;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import java.util.LinkedList;

/**
 * Creates a single {@link MyProxyConnectable} object for a given configuration.
 * Generally this is used internally by the {@link MPConnectionProvider} class.
 * 

Created by Jeff Gaynor
* on 1/23/14 at 9:38 AM */ public class MPSingleConnectionProvider implements javax.inject.Provider { String username; String hostname; String password; int port; long socketTimeout = 0L; long lifetime;// note this must be converted to seconds for MyProxy! KeyManagerFactory keyManagerFactory; MyLoggingFacade facade; String serverDN; public MPSingleConnectionProvider(MyLoggingFacade logger, String username, String password, long lifetime, MyProxyServiceFacade facade ) throws IOException, GeneralSecurityException { this(logger, username, password, null, lifetime, facade); } public MPSingleConnectionProvider(MyLoggingFacade logger, String username, String password, String loa, long lifetime, MyProxyServiceFacade facade ) throws IOException, GeneralSecurityException { this(logger, username, password, facade.getFacadeConfiguration().getHostname(), facade.getLOAPort(loa), lifetime, facade.getFacadeConfiguration().getSocketTimeout(), facade.getKeyManagerFactory(), facade.getFacadeConfiguration().getServerDN()); } public MPSingleConnectionProvider(MyLoggingFacade logger, String username, String password, String hostname, int port, long lifetime, long socketTimeout, KeyManagerFactory keyManagerFactory, String serverDN) { this.username = username; if (password == null) { this.password = ""; } else { this.password = password; } this.port = port; this.lifetime = lifetime; this.hostname = hostname; this.keyManagerFactory = keyManagerFactory; this.facade = logger; this.socketTimeout = socketTimeout; this.serverDN = serverDN; } public static class MyProxyLogonConnection implements MyProxyConnectable { public MyProxyLogonConnection(MyProxyLogon myProxyLogon) { this.myProxyLogon = myProxyLogon; } MyProxyLogon myProxyLogon; @Override public void close() { try { myProxyLogon.disconnect(); } catch (Throwable e) { throw new ConnectionException("Error: disconnecting from myproxy", e); } } @Override public void open() { try { myProxyLogon.connect(); myProxyLogon.logon(); } catch (Throwable e) { throw new ConnectionException("Error: connecting to myproxy", e); } } @Override public LinkedList getCerts(MyPKCS10CertRequest pkcs10CertRequest) { try { myProxyLogon.getCredentials(pkcs10CertRequest.getEncoded()); LinkedList certList = new LinkedList(); certList.addAll(myProxyLogon.getCertificates()); return certList; } catch (Throwable e) { throw new GeneralException("Error: getting certs from myproxy", e); } } Identifier identifier; @Override public Identifier getIdentifier() { return identifier; } @Override public String getIdentifierString() { if (identifier == null) return null; return identifier.toString(); } @Override public void setIdentifier(Identifier identifier) { this.identifier = identifier; } } //end inner class @Override public T get() { MyProxyLogon myProxyLogon = null; if (facade == null) { myProxyLogon = new MyProxyLogon(); } else { myProxyLogon = new MyProxyLogon(facade, serverDN); } myProxyLogon.setHost(hostname); // Fix for CIL-153, CIL-147 myProxyLogon.setLifetime((int) (lifetime / 1000)); if (myProxyLogon.getLifetime() < 0) { facade.warn("Negative cert lifetime of " + myProxyLogon.getLifetime() + " encountered. Server should default to 0."); } myProxyLogon.setPort(port); myProxyLogon.setSocketTimeout(socketTimeout); myProxyLogon.setUsername(username); myProxyLogon.setPassphrase(password); myProxyLogon.setKeyManagerFactory(keyManagerFactory); return (T) new MyProxyLogonConnection(myProxyLogon); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy