Friday, May 4, 2012

使用Java Applet製作自然人憑證登入驗證(1)

因為要實作使用自然人憑證來登入網站並達到跨browser的功能,因此打算以Applet的方式來呼叫HiSecue的Win32 API,不過因為在Java中呼叫JNI屬於特權模式,所以Applet程式必須打包成JAR檔,並且將它簽章後同時獲得客戶端的同意才得以在瀏覽器中執行。

另一方面,若要進行簽章必須先取得獲CA認證的憑證,但是要取得CA核發的憑證要很多$,因此可以參考另一篇,以JDK的keytool工具製作自我核發的憑證。



目的:讓Applet得以在客戶端中執行特權模式的程式寫法

測試環境:

JDK 1.6.31 32bits <- 若系統中同時有64bits及32bits,請將JRE_HOME設為32bits
Windows 7 x64
Netbeans 7.1.1
讀卡機一台
自然人憑證一張
中華電信P11JNI.dll,P11JNI.jar
先決條件:
P11JNI.jar必須放置在JRE_HOME/lib/ext底下
P11JNI.dll必須放置在JRE_HOME/lib/i386以及SystemRoot/system32/底下
特權模式實作方式: 1.使用Netbeans建立一個Java專案,選擇新增一個JApplet Form。 2.開啓JApplet Form的原始程式,引入下列套件:
import java.security.AccessController;
import java.security.PrivilegedAction;
3.使用Inner Class的方式新增一個類別checkCard,它必須繼承PrivilegedAction<Object>介面。
class checkCard implements PrivilegedAction<Object> {

        public Object run() {
            String msg = "none";
            try {
                Module.initialize();
                Module module = Module.getInstance();
                int[] tokIDs = module.getTokens();
                if (tokIDs.length != 0) {
                    msg = "Ready!";
                } else {
                    msg = "Confirm the reader is ready yet!";
                }
            } catch (Exception e) {
                msg = e.getMessage();
            } finally {
                return ready;
            }
        }
    }
4.前往下一篇

No comments:

Post a Comment