每天我需要做一个例程,连接到远程地址,使用我的智能卡进行身份验证,然后在此远程地址上检查我的用户名的任何新信息。

我想自动执行此例程,创建一个将连接到该地址的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);


有什么帮助吗?我进行了很多搜索,但无法使用智能卡进行连接...

在此先感谢您,我的英语不好。

最佳答案

我们看不到您有关智能卡阅读器的代码。
第一次,您必须从智能卡中获取信息。
尝试看看如何使用smartcardio库。
然后将所有信息从您的应用程序发送到Web。

如果我了解您的问题,我认为它可以为您提供帮助。

关于java - 使用智能卡的Java HttpClient身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15774212/

10-12 06:05