Search code examples
xamarin.formsxamarin.androidkeychain

Xamarin forms android using user certificates


If a user has installed a pfx user certificate on an Android device, chrome browser sees and asks permission to use users client certificate to access a server that accepts such certificates. What is the Xamarin forms equivalent ?

certificate access / selection

How can we access these certificates in Xamarin form apps for Android.

Under windows (UWP) Accessing user certificates is just

              httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
              httpClientHandler.UseDefaultCredentials = true;

Under Android we are trying to use Custom version AndroidClienthandler

 MyAndroidClientHandler clientHandler = new MyAndroidClientHandler();

In a Custom AndroidClientHandler There are 2 problems to solve
1) how to get a certificate from the users certificates from the keychain ?
Something like this post perhaps? Client Certificates on Android

2) How do you add that cert to the ClientHandler? Can I simply do this
clientHandler.TrustedCerts.Add(cert);
or more likely
Add certificate to SSL Context

Has anyone ever managed to do a HTTPS call using an already installed client certificate from Xamarin forms ?


Solution

  • Looks like Android didn't provide a direct way to use a default credential, but Android provide developers with some choice to use system-wide credentials or app's private credential.

    KeyChain may help to launch a system dialog for user to choose a certificate/enter the password. Refering to earlier post.

    And extend AndroidClientHandler as posted here is what I found to use the client certificate.

    Hope it helps.