Каждый день мне нужно сделать рутину, подключиться к удаленному адресу, пройти аутентификацию с помощью моей смарт-карты и затем проверить любую новую информацию для моего имени пользователя на этом удаленном адресе.Проверка подлинности Java HttpClient с помощью смарт-карты
Я хотел бы сделать эту рутину автоматически, создать приложение Java, которое будет подключаться к адресу, аутентифицироваться с помощью смарт-карты и затем проверять, есть ли какая-либо новая информация.
Я пробовал, но не успел установить окружение HttpClient с помощью смарт-карты, я подключил карту к своей машине и запустил Cronjob, она возвращает предупреждение о том, что карта не вставлена.
код ниже:
HttpClient httpClient = new DefaultHttpClient();
// Secure Protocol implementation.
SSLContext ctx = SSLContext.getInstance("SSL");
// Implementation of a trust manager for X509 certificates
X509TrustManager tm = new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws java.security.cert.CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] arg0, String arg1)
throws java.security.cert.CertificateException {
// TODO Auto-generated method stub
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ClientConnectionManager ccm = httpClient.getConnectionManager();
// register https protocol in httpclient's scheme registry
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
HttpGet httpget = new HttpGet("http://remoteserver.com/login.seam");
HttpParams params = httpclient.getParams();
params.setParameter("param1", "paramValue1");
httpget.setParams(params);
System.out.println("REQUEST:" + httpget.getURI());
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody;
responseBody = httpclient.execute(httpget, responseHandler);
System.out.println(responseBody);
Есть ли помощь с этим? Я много искал, но я не могу подключиться с помощью смарт-карты ...
Спасибо заранее и извините за мой плохой английский.