package com.****util; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import javax.net.ssl.KeyManagerFactory; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class HttpConnector { static Log logger = LogFactory.getLog(HttpConnector.class); public HttpConnector(){ this.init(); } private String URLs[]; private String proxyHost = null; private String proxyPort = "8080"; private String retryCount = "1"; private String sslPort = "443"; private String algorithm = KeyManagerFactory.getDefaultAlgorithm(); private String storeKey; private String trustKey; private String protocolType ; private String keyStoreName; private String trustStoreName; private String[] subUrls; /** * init parameters */ public void init(){ logger.debug("enter httpconnector init()"); this.URLs=new String[]{Utils.getProperty("jpc.httpconnector.urls")}; logger.debug("URLs ===>"+URLs[0]); this.proxyPort=Utils.getProperty("jpc.httpconnector.proxyport"); logger.debug("proxyPort ===>"+proxyPort); this.retryCount=Utils.getProperty("jpc.httpconnector.retrycount") ; if(StringUtils.isEmpty(this.retryCount)){ this.retryCount="1"; } logger.debug("retryCount ===>"+retryCount); this.algorithm=KeyManagerFactory.getDefaultAlgorithm(); this.storeKey=Utils.getProperty("jpc.httpconnector.storekey") ; logger.debug("storeKey ===>"+storeKey); this.trustStoreName=Utils.getProperty("jpc.httpconnector.truststorename"); logger.debug("trustStoreName ===>"+trustStoreName); this.keyStoreName=Utils.getProperty("jpc.httpconnector.keystorename"); logger.debug("keyStoreName ===>"+keyStoreName); this.subUrls=new String[]{Utils.getProperty("jpc.httpconnector.suburls")}; logger.debug("subUrls ===>"+subUrls[0]); this.protocolType=Utils.getProperty("jpc.httpconnector.protocoltype"); logger.debug("protocolType ===>"+protocolType); this.sslPort=Utils.getProperty("jpc.httpconnector.sslport" ); logger.debug("sslPort ===>"+sslPort); if(StringUtils.isEmpty(this.sslPort)){ this.retryCount="443"; } this.trustKey=Utils.getProperty("jpc.httpconnector.trustkey"); logger.debug("trustKey ===>"+trustKey); } public String sendEntity(RequestEntity requestEntiry)throws MessagingException { final String debugHeader = getClass().getName() + ".sendEntity(): "; HttpClient client = new HttpClient(); InputStream stream; String responseStr = ""; this.proxyHost = this.proxyHost == null|| this.proxyHost.trim().equals("") ? null : this.proxyHost .trim(); if (this.proxyHost != null) { client.getHostConfiguration().setHost(this.proxyHost, Integer.parseInt(this.proxyPort)); } if ("https".equals(protocolType)) { Protocol https = new Protocol(protocolType, new JPCSSLProtocolSocketFactory(keyStoreName, storeKey .toCharArray(), algorithm, trustStoreName, trustKey .toCharArray(), algorithm, null),Integer.parseInt(sslPort)); logger.debug("https "+https); Protocol.registerProtocol(protocolType, https); } PostMethod method = new PostMethod(this.URLs[0] + subUrls[0]); client.getParams().setAuthenticationPreemptive(true); logger.debug("client====>"+client); method.setRequestEntity(requestEntiry); method.setDoAuthentication(true); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(Integer.parseInt(retryCount), false)); logger.debug("method "+method); try { client.executeMethod(method); String statusCode = String.valueOf(method.getStatusCode()); if (statusCode.startsWith("4") || statusCode.startsWith("5")) { logger.error(debugHeader + "For the URL: " + this.URLs[0] + ", the status code is other than 200. Actual Status Code is : " + statusCode + " and Hence trying with other urls. "); } else { stream = method.getResponseBodyAsStream(); logger.debug("stream "+stream); responseStr = convertStream(stream); } } catch (Exception e) { logger.error("Exception occurs:" + e.getMessage()); throw new ConnectorException(debugHeader + "Exception Occured with the url(s) = " + this.URLs[0] + subUrls[0] + ", and returning null"); } finally { if (method != null) { method.releaseConnection(); } } return responseStr; } /** * convert inputstream to String * @param stream comes from host * @return * @throws IOException */ private String convertStream(InputStream stream) throws IOException { BufferedInputStream bis = new BufferedInputStream(stream); int c = -1; StringBuffer sbf = new StringBuffer(""); if ((c = bis.read()) != -1) { do { sbf.append(String.valueOf((char) c)); } while ((c = bis.read()) != -1); } return sbf.toString(); } }
package com.***.util; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import org.apache.commons.httpclient.ConnectTimeoutException; import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class JPCSSLProtocolSocketFactory implements SecureProtocolSocketFactory { private static final Log logger = LogFactory.getLog(JPCSSLProtocolSocketFactory.class); private SSLContext sslContext; private SSLSocketFactory sslSocketFactory; public JPCSSLProtocolSocketFactory(String keyStorePath, char[] keystoreStorepass, String keyManagerFactoryAlgorithm, String trustStorePath, char[] truststoreStorepass, String trustManagerFactoryAlgorithm, String keystoreType) { try { logger.debug("enter JPCSSLProtocolSocketFactory constructor..."); StringBuffer sb = new StringBuffer(); logger.debug(sb.append("keyStorePath="+keyStorePath+",keystoreStorepass="+new String(keystoreStorepass)+",keyManagerFactoryAlgorithm="+keyManagerFactoryAlgorithm +",trustStorePath="+trustStorePath+",truststoreStorepass="+new String(truststoreStorepass)+",trustManagerFactoryAlgorithm="+trustManagerFactoryAlgorithm+",keystoreType="+keystoreType)); if (trustStorePath == null || truststoreStorepass == null || trustManagerFactoryAlgorithm == null) { throw new IllegalArgumentException("trustStorePath == null || truststoreStorepass == null || trustManagerFactoryAlgorithm == null"); } KeyManager[] kms = null; TrustManager[] tms = null; KeyStore keystore = null; if (keyStorePath != null && keyStorePath.trim().length() > 0) { if (keystoreStorepass == null || keyManagerFactoryAlgorithm == null) { throw new IllegalArgumentException("keystoreStorepass == null || keyManagerFactoryAlgorithm == null"); } if (keystoreType == null || keystoreType.trim().length() == 0) { keystore = loadKeyStore(keyStorePath, keystoreStorepass); } else { keystore = loadKeyStore(keystoreType, keyStorePath, keystoreStorepass); } KeyManagerFactory kmFactory =KeyManagerFactory.getInstance(keyManagerFactoryAlgorithm); logger.debug("kmFactory === "+kmFactory); kmFactory.init(keystore, keystoreStorepass); kms = kmFactory.getKeyManagers(); logger.debug("kms === "+kms); if (new String(truststoreStorepass).trim().length() == 0) { logger.debug("truststoreStorepass:(" + truststoreStorepass.toString() + ") set to null"); truststoreStorepass = null; } KeyStore truststore = loadKeyStore(trustStorePath, truststoreStorepass); logger.debug("truststore === "+truststore); TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(trustManagerFactoryAlgorithm); logger.debug("tmFactory === "+tmFactory); tmFactory.init(truststore); logger.debug("tmFactory === "+tmFactory); tms = tmFactory.getTrustManagers(); logger.debug("tms === "+tms); this.sslContext = SSLContext.getInstance("SSL"); logger.debug("sslContext === "+sslContext); this.sslContext.init(kms, tms, null); this.sslSocketFactory = this.sslContext.getSocketFactory(); logger.debug("sslSocketFactory === "+sslSocketFactory); } } catch (KeyManagementException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeyStoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnrecoverableKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Socket createSocket(final String host, final int port, final InetAddress clientHost, int clientPort) throws IOException { return sslSocketFactory.createSocket(host, port, clientHost, clientPort); } /** * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int) */ public Socket createSocket(final String host, final int port) throws IOException { return sslSocketFactory.createSocket(host, port); } /** * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean) */ public Socket createSocket(final Socket socket, final String host, final int port, final boolean autoClose) throws IOException { return sslSocketFactory.createSocket(socket, host, port, autoClose); } /* * //invoked after invoke httpClient.executeMethod() method * @see org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String, int, java.net.InetAddress, int, org.apache.commons.httpclient.params.HttpConnectionParams) */ public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3, HttpConnectionParams arg4) throws IOException, UnknownHostException, ConnectTimeoutException { return sslSocketFactory.createSocket(arg0, arg1,arg2,arg3); } public static KeyStore loadKeyStore(String keyStoreFilePath, char keyStorePassword[]) { try { return loadKeyStore(KeyStore.getDefaultType(), keyStoreFilePath, keyStorePassword); } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug("error when load the key store,will return null"); } } return null; } public static KeyStore loadKeyStore(String keyStoreType, String keyStoreResource, char keyStorePassword[]) throws Exception { InputStream in = null; try { KeyStore keystore; try { KeyStore keyStore = KeyStore.getInstance(keyStoreType); logger.debug("keystore=="+keyStore); in = JPCSSLProtocolSocketFactory.class.getResourceAsStream(keyStoreResource); logger.debug("in=="+in); if (in == null) throw new Exception("file [" + keyStoreResource + "] does not exist"); keyStore.load(in, keyStorePassword); logger.debug("keyStore=="+keyStore); keystore = keyStore; logger.debug("keystore "+keystore); } catch (IOException ioe) { throw new Exception(ioe.getMessage(), ioe); } catch (Exception e) { throw new Exception(e.getMessage(), e); } return keystore; } finally { if (in != null) try { in.close(); } catch (IOException ioe1) { } } } }
/**调用*/ public static String generateSMAL(String customerID,String samlentryPoint) throws Exception{ logger.debug("enter generateSMAL ()"); StringBuffer credentialData =new StringBuffer(); credentialData.append("<CUSTOMERID>").append(customerID).append("</CUSTOMERID>") .append("<ENTRYPOINTID>").append(samlentryPoint).append("</ENTRYPOINTID>"); String issueraddress =Utils.getProperty("jpcegainsamlissueraddress"); logger.debug("issueraddress===>"+issueraddress); logger.debug("credentialData ==="+credentialData); VelocityContext velocityContext = new VelocityContext(); velocityContext.put("credentialData",credentialData); velocityContext.put("issueraddress",issueraddress); VelocityEngine velocity = new VelocityEngine(); String soapTokenRequestFilePath=Utils.getProperty("jpcegainsoaptokenrequestfilepath"); logger.debug("soapTokenRequestFilePath ===>"+soapTokenRequestFilePath); velocity.setProperty("file.resource.loader.path", soapTokenRequestFilePath); StringWriter messageBody =null; velocity.init(); Template template = velocity.getTemplate("SoapTokenRequest.vm", "UTF-8"); messageBody = new StringWriter(); template.merge(velocityContext, messageBody); logger.debug("SoapTokenRequest request body==="+messageBody.toString()); HttpConnector hc=new HttpConnector(); logger.debug("HttpConnector ===="+hc); StringRequestEntity requestEntity = new StringRequestEntity(messageBody.toString(), "text/xml", "UTF-8"); logger.debug("requestEntity =="+requestEntity); String responseMessage = hc.sendEntity(requestEntity); logger.debug("responseMessage ==== "+responseMessage); String token=parseResponse(responseMessage); logger.debug("SAML token==="+token); return token; } private static String parseResponse(String responseMessage) throws Exception { // TODO Auto-generated method stub logger.debug("responseMessage====>"+responseMessage); String token=""; try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new ByteArrayInputStream(responseMessage.getBytes())); NodeList nl = doc.getElementsByTagName("csts:SAMLResponse"); Node my_node = nl.item(0); logger.debug("my_node====>"+my_node); token = my_node.getFirstChild().getNodeValue(); } catch (Exception e) { logger.error("facing error when parse response=="+e.getMessage()); e.printStackTrace(); throw new Exception("facing error when parse response=="+e.getMessage()); } return token; }
import javax.net.ssl.KeyManagerFactory; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.citi.ito.jpc.common.Utils; import com.*******.messaging.exception.ConnectorException; import com.*******.exception.MessagingException; public class HttpConnector { static Log logger = LogFactory.getLog(HttpConnector.class); public HttpConnector(){ this.init(); } private String URLs[]; private String proxyHost = null; private String proxyPort = "8080"; private String retryCount = "1"; private String sslPort = "443"; private String algorithm = KeyManagerFactory.getDefaultAlgorithm(); private String storeKey; private String trustKey; private String protocolType ; private String keyStoreName; private String trustStoreName; private String[] subUrls; /** * init parameters */ public void init(){ logger.debug("enter httpconnector init()"); this.URLs=new String[]{Utils.getProperty("jpc.httpconnector.urls")}; logger.debug("URLs ===>"+URLs[0]); this.proxyPort=Utils.getProperty("jpc.httpconnector.proxyport"); logger.debug("proxyPort ===>"+proxyPort); this.retryCount=Utils.getProperty("jpc.httpconnector.retrycount") ; if(StringUtils.isEmpty(this.retryCount)){ this.retryCount="1"; } logger.debug("retryCount ===>"+retryCount); this.algorithm=KeyManagerFactory.getDefaultAlgorithm(); this.storeKey=Utils.getProperty("jpc.httpconnector.storekey") ; logger.debug("storeKey ===>"+storeKey); this.trustStoreName=Utils.getProperty("jpc.httpconnector.truststorename"); logger.debug("trustStoreName ===>"+trustStoreName); this.keyStoreName=Utils.getProperty("jpc.httpconnector.keystorename"); logger.debug("keyStoreName ===>"+keyStoreName); this.subUrls=new String[]{Utils.getProperty("jpc.httpconnector.suburls")}; logger.debug("subUrls ===>"+subUrls[0]); this.protocolType=Utils.getProperty("jpc.httpconnector.protocoltype"); logger.debug("protocolType ===>"+protocolType); this.sslPort=Utils.getProperty("jpc.httpconnector.sslport" ); logger.debug("sslPort ===>"+sslPort); if(StringUtils.isEmpty(this.sslPort)){ this.retryCount="443"; } this.trustKey=Utils.getProperty("jpc.httpconnector.trustkey"); logger.debug("trustKey ===>"+trustKey); } public String sendEntity(RequestEntity requestEntiry)throws MessagingException { final String debugHeader = getClass().getName() + ".sendEntity(): "; HttpClient client = new HttpClient(); InputStream stream; String responseStr = ""; this.proxyHost = this.proxyHost == null|| this.proxyHost.trim().equals("") ? null : this.proxyHost .trim(); if (this.proxyHost != null) { client.getHostConfiguration().setHost(this.proxyHost, Integer.parseInt(this.proxyPort)); } if ("https".equals(protocolType)) { Protocol https = new Protocol(protocolType, new JPCSSLProtocolSocketFactory(keyStoreName, storeKey .toCharArray(), algorithm, trustStoreName, trustKey .toCharArray(), algorithm, null),Integer.parseInt(sslPort)); logger.debug("https "+https); Protocol.registerProtocol(protocolType, https); } PostMethod method = new PostMethod(this.URLs[0] + subUrls[0]); client.getParams().setAuthenticationPreemptive(true); logger.debug("client====>"+client); method.setRequestEntity(requestEntiry); method.setDoAuthentication(true); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(Integer.parseInt(retryCount), false)); logger.debug("method "+method); try { client.executeMethod(method); String statusCode = String.valueOf(method.getStatusCode()); if (statusCode.startsWith("4") || statusCode.startsWith("5")) { logger.error(debugHeader + "For the URL: " + this.URLs[0] + ", the status code is other than 200. Actual Status Code is : " + statusCode + " and Hence trying with other urls. "); } else { stream = method.getResponseBodyAsStream(); logger.debug("stream "+stream); responseStr = convertStream(stream); } } catch (Exception e) { logger.error("Exception occurs:" + e.getMessage()); throw new ConnectorException(debugHeader + "Exception Occured with the url(s) = " + this.URLs[0] + subUrls[0] + ", and returning null"); } finally { if (method != null) { method.releaseConnection(); } } return responseStr; } /** * convert inputstream to String * @param stream comes from host * @return * @throws IOException */ private String convertStream(InputStream stream) throws IOException { BufferedInputStream bis = new BufferedInputStream(stream); int c = -1; StringBuffer sbf = new StringBuffer(""); if ((c = bis.read()) != -1) { do { sbf.append(String.valueOf((char) c)); } while ((c = bis.read()) != -1); } return sbf.toString(); } }
##################SAML#######################
jpcegainsamlentrypoint=1000
jpcegainsamlissueraddress=*****
jpcegainsoaptokenrequestfilepath=/*****
#################JPC HTTP CONNECTOR######################
jpc.httpconnector.urls=*****
jpc.httpconnector.proxyport=8080
jpc.httpconnector.retrycount=1
jpc.httpconnector.storekey=*****
jpc.httpconnector.truststorename=/resources/SSO/EGAIN/saixu33_truststore.jks
jpc.httpconnector.keystorename=/resources/SSO/EGAIN/saixu33_keystore.jks
jpc.httpconnector.suburls=/*****
jpc.httpconnector.protocoltype=https
jpc.httpconnector.sslport=443
jpc.httpconnector.trustkey=citi1234
相关推荐
QuickbooksWebConnector QuickbooksWebConnector是Redis支持的库,用于... 请求构建器应该是一个响应perform方法的Ruby类,该类将在排队作业时接收您提供的任何其他参数,并返回要发送到QuickBooks的XML。 本示例使用库
A HttpConnector implements a non-HTTP proxied connection through the CONNECT method.
修改HttpConnector 类请求超时时间为5分钟和十分钟,解决由于sonar分析请求太慢导致的超时
presto.zip,presto-示例http connectorthe presto分布式大数据sql查询引擎的官方主页
Zotero Connector
SAP .Net Connector 具体开发案例
eclipse的SVN插件,必须要装svn connector
firefox-connector
mysql connector 说明文档, 官方说明文档
mysql connector odbc 驱动
NULL 博文链接:https://liudeh-009.iteye.com/blog/1563948
SAP Java Connector3.0
sap .net connector document
Sql Server Connector kafka
eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector eclipse svn connector
subversion eclipse connector
AD Connector 环境部署教程 AD Connector 环境部署教程
jdbc-connector.rar jdbc-connector.rar jdbc-connector.rar
PCIe Connector and Interface仿真和优化 De-Embedding Through Lines Daughter Card Comparisons Via Effects
MySQL ConnectorPython Revealed