2012-05-21 13 views
8

Mam problem z natywnym WebView na Androida. Muszę uwierzytelnić się w witrynie za pomocą certyfikatu klienta SSL. Android WebView wydaje się nie obsługiwać tego. Jako obejście użyłem zmodyfikowaną wersję WebView:WebView z certyfikatem klienta SSL na Androida 4 ICS

https://github.com/yonekawa/webview-with-client-certificate

Zmodyfikowany WebView działa poprzez wstrzyknięcie prawidłowo skonfigurowany SslSocketFactory do standardowego WebView Android. Działa to dobrze na urządzeniach z Androidem 2.x. Jednak w przypadku systemu Android 4 ICS to już nie działa. SslSocketFactory nadal istnieje w ICS, jednak wydaje się, że nie jest już używany.

Moje pytanie brzmi: czy ktoś pomyślnie skonfigurował Android WebView na ICS, aby działał z certyfikatem klienta? Czy jest jakaś alternatywa?

Co ja już próbowałem:

  • importowania certyfikatu klienta SSL do Android kluczy i tylko przy użyciu WebView bez żadnych modyfikacji. To nie działa, certyfikat klienta nie jest wysyłany wraz z żądaniami. Działa jednak w macierzystej przeglądarce.

  • Tworzenie połączenia SSL sam przy użyciu HttpClient, uzyskanie HTML witryny i przekazanie go do WebView. Zasadniczo działa, ale muszę przechwycić wszystkie żądania wykonane przez WebView i obsługiwać je samodzielnie. Jednak WebView nie dostarcza danych o żądaniach POST, co sprawia, że ​​podejście to jest dla mnie bezużyteczne.

+0

Autoryzacja certyfikatu klienta wydaje się być poprawiona w wersji 4.0 zgodnie z [ten komentarz] (http://code.google.com/p/android/issues/detail?id=8196#c70). Sprawdź link w tym komentarzu do instrukcji użytkowania. – Rajesh

+0

Tak, jest ustalona dla samodzielnej przeglądarki. Mój problem polega na tym, że chcę używać autoryzacji certyfikatu klienta we wbudowanym WebView w mojej własnej aplikacji. – chriz

Odpowiedz

3

myślę co chcesz jest nadrzędne następujący sposób ukryty:

public void onReceivedClientCertRequest(WebView view, 
ClientCertRequestHandler handler, String host_and_port) { 

Domyślnie będzie to cancle żądania.

Użyłem tej metody po to przykład za pomocą ukrytych API: http://devmaze.wordpress.com/2011/01/19/using-com-android-internal-part-5-summary-and-example/

Przepraszam za opóźnienie w odpowiedzi. Natknąłem się na twoje pytanie ... Mam nadzieję, że nadal pomaga.

Powiązane problemy