簡體   English   中英

使用智能卡的Java HttpClient身份驗證

[英]Java HttpClient authentication with smart card

每天我需要做一個例程,連接到遠程地址,使用我的智能卡進行身份驗證,然后在此遠程地址上檢查我的用戶名的任何新信息。

我想自動執行此例程,創建一個將連接到該地址的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。

如果我了解您的問題,我認為它可以為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM