2017-11-08 3 views
0

Ich schreibe eine Android App, die eine httpsurl in einer anzeigen. Diese webpage verwendet ein selbstsigniertes Zertifikat für SSL und erfordert ein Clientzertifikat für die Authentifizierung. Wie kann ich ein Zertifikat mit webview übergebenClient-Zertifikat Authentifizierung in WebView

Antwort

1

Sie müssen ein WebViewClient-Objekt für Ihre WebView-Klasse bereitstellen. Wenn ein Server eine Client-Authentifizierung erfordert, wird das WebView über das Objekt onReceivedClientCertRequest des WebViewClient-Objekts benachrichtigt.

Beispiel:

MyWebClient-Klasse.

public class myWebClient extends WebViewClient 
{ 
    @Override 
    public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) { 
     //HERE YOU CAN DO SOME STUFF TO RETRIEVE KEY AND CERTIFICATES 
     request.proceed(mPrivateKey, mCertificates); 
    } 
    public void onReceivedError(WebView view, int errorCode, 
           String description, String failingUrl) { 
     super.onReceivedError(view, errorCode, 
       description, failingUrl); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 

     view.loadUrl(url); 
     return true; 

    } 
} 

MainActivity.java

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    web = (WebView) findViewById(R.id.webview01); 
    web.setWebViewClient(new myWebClient()); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.loadUrl("my_url.com"); 
} 

Die Methode die Client-privaten Schlüssel und ein Zertifikat Kette um proceed(PrivateKey k, X509Certificate[] chain) zu nehmen SSL 2-Wege-Handshake zu erreichen.

Verwandte Themen