2012-04-12 170 views
4

有任何使用客戶端證書進行身份驗證和PhoneGap的經驗嗎?我有一個由客戶端證書保護的Web應用程序,現在我想使用PhoneGap訪問此Web應用程序。該Web應用程序拒絕我的請求,因爲它無法對我進行身份驗證,因爲沒有找到證書。我通過Android默認瀏覽器下載了數據格式爲PKCS#12的客戶端證書,但是我現在只將它存儲在瀏覽器密鑰庫中,而不是像Android這樣的全局密鑰庫。所以總結一下:帶有PhoneGap客戶端證書的身份驗證

1.)是否有可能在Android上使用客戶端證書進行身份驗證? 2.)如果是的話,PhoneGap也可以嗎? 3.)如果是,我該怎麼做?

謝謝!

問候,拉爾夫

比從未
+1

真的嗎?沒有人??請!!我現在發現的一件事是,客戶端證書只適用於Android 4+ – RaHe 2012-04-20 16:20:45

回答

6

猶未晚:這個問題爲Android 4+(至少到SDK 16)是的WebView被拒,SDK的隱藏onReceivedClientCertRequest,這是不能被覆蓋的客戶端證書身份驗證。

這可以繞過隱藏類android.jar(見https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/),然後編譯cordova(從https://github.com/apache/incubator-cordova-android)與覆蓋CordovaWebViewClient :: onReceivedClientCertRequest。

我這樣做是爲了讓init上的應用程序加載私鑰和證書鏈(用戶只需在第一個應用程序exec上從鑰匙串中選擇它)。這應該在另一個線程中完成;我懷疑這是不支持客戶端證書認證的原因,因爲主線程會等待用戶選擇要使用的證書和/或要加載的證書鏈,這是不可接受的。

編輯: 這是短暫的:似乎那裏onReceivedClientCertRequest採用的是Android 4.2(SDK 17)刪除

的結論是太快了:他們剛搬來的功能WebViewClientClassicExt類,所以你只要需要從它擴展CordovaWebViewClient而不是WebViewClient,它也適用於4.2。

+0

我似乎WebViewClientClassicExt不存在Android.Webkit包中的Android 4.2和4.3。 – ridan 2014-01-07 10:53:26

相關問題