2013-04-02 2 views
0

Каждый день мне нужно сделать рутину, подключиться к удаленному адресу, пройти аутентификацию с помощью моей смарт-карты и затем проверить любую новую информацию для моего имени пользователя на этом удаленном адресе.Проверка подлинности 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); 

Есть ли помощь с этим? Я много искал, но я не могу подключиться с помощью смарт-карты ...

Спасибо заранее и извините за мой плохой английский.

ответ

1

Мы не видим ваш код о считывателе смарт-карт. В первый раз вам нужно получить информацию с вашей смарт-карты. Попробуйте посмотреть, как использовать библиотеку smartcardio. Затем отправьте всю информацию из своего приложения в Интернет.

Я думаю, что это может помочь вам, если я понял вашу проблему.