2012-10-24 15 views
6

Chciałbym użyć uwierzytelniania certyfikatu klienta w aplikacji XAML aplikacji Sklepu systemu Windows. Za pomocą makecert Utworzono samopodpisane certyfikaty CA i klienta, uwierzytelnianie działa w przeglądarce IIS/ASP.NET + (IE10, Chrome itp.) Dobrze. Teraz chciałem go użyć w aplikacji Windows Store, ale nie jestem pewien, jak faktycznie zainstalować certyfikat. Mam plik cert.pfx, który zaimportowałem do IE10. Oto kod, którego używam do korzystania z usługi HTTP przez SSL.Instalowanie certyfikatów klienta w aplikacjach XAML aplikacji Sklep Windows

HttpClientHandler handler = new HttpClientHandler(); 
handler.ClientCertificateOptions = ClientCertificateOption.Automatic; 

HttpClient client = new HttpClient(handler); 

Nie wiem jaka jest różnica między ClientCertificateOption.Automatic i ClientCertificateOption.Manual. Podczas próby połączenia certyfikat nie jest wyświetlany na serwerze i otrzymuję błąd 401 Zgaduję, że certyfikat nie jest obecny w magazynie certyfikatów aplikacji i dlatego nic nie jest wysyłane do serwera. Jak zainstalować certyfikat?

Czy należy używać metody CertificateEnrollmentManager.ImportPfxDataAsync()? jeśli tak, to jak mogę przekonwertować .pfx na "PFX zakodowany w Base64" Czy pfx powinien zawierać klucz prywatny?

A może powinienem użyć rozszerzenie świadectw, jak opisano tutaj: http://msdn.microsoft.com/en-us/library/windows/apps/hh464981.aspx#certificates_extension_content

Odpowiedz

6

Poniższy kod ładuje plik pfx i stworzyć zakodowany ciąg base64, który może być używany metodą ImportPfxDataAsync:

StorageFolder packageLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
StorageFolder certificateFolder = await packageLocation.GetFolderAsync("Certificates"); 
StorageFile certificate = await certificateFolder.GetFileAsync("YourCert.pfx"); 

IBuffer buffer = await Windows.Storage.FileIO.ReadBufferAsync(certificate); 
string encodedString = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer); 

ten zakłada, że ​​umieszczasz swój certyfikat w folderze "Certyfikaty".

Możesz chcieć rzucić okiem na http://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/ dzięki temu przejdziesz kompleksowy scenariusz korzystania z certyfikatów klienta w aplikacji Windows 8 do komunikacji z ap.net web asp.net.

Powiązane problemy