2012-08-29 29 views
6

Próbuję połączyć się z interfejsem API do zarządzania usługą Windows Azure. Muszę dostarczyć certyfikat, który wcześniej przesłałem do mojego lazurowego portalu. W .NET jest to bardzo łatwe, jako detailed here. W Metro nie można jednak ręcznie dołączyć certyfikatu do żądania. Na forum Microsoft Znalazłem to:Certyfikat po stronie klienta w aplikacji Metro do zarządzania usługą Windows Azure

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

HttpClient aClient = new HttpClient(aHandler); 
HttpResponseMessage aResp = await aClient.GetAsync("https://[azure service management uri]"); 

Wraz z podaniem Aplikacja umożliwia korzystanie z udostępnionych certyfikatów, należy wybrać certyfikat lub przedstawić opcję Wybierz certyfikat użytkownika. Certyfikat znajduje się w moim osobistym sklepie i próbowałem nawet dołączyć certyfikat do manifestu pakietu, ale nic nie działa. Wygląda na to, że po prostu nie zawiera certyfikatu w żądaniu.

Jaki jest prawidłowy sposób wywoływania interfejsu API opartego na REST, który wymaga certyfikatu w aplikacji Metro?

+0

Przetestowałem to dziś wieczorem w aplikacji metra w systemie Javascript, a tam działa za pomocą WinJS.xhr! Po tej stronie pojawia się okienko z pytaniem, który certyfikat chcę użyć. Jednak po stronie C# wygląda na to, że nie działa to przy użyciu HttpClient lub WebRequest. Chciałbym mieć rozwiązanie C#. –

+0

Jestem w tej samej łodzi :). Działa bezbłędnie dzięki aplikacji HTML5/JS. Próbowałem wszystkiego, ale nie mogłem go uruchomić w aplikacji XAML/C#. Miej oko na ten post na forum MSDN: http://social.msdn.microsoft.com/Forums/sv/winappswithcsharp/thread/0d005703-0ec3-4466-b389-663608fff053. Harin, jeden z respondentów w tym wątku, był w stanie wykonać tę pracę !!! Wysłał mi swój kod, ale to też nie zadziałało. –

Odpowiedz

6

Myślę, że mam na to odpowiedź. Sprawdź certyfikat, którego używasz do uwierzytelnienia swoich żądań. Nie musi być 2 rzeczy w tym świadectwie:

  1. Upewnić się, że „Uwierzytelnienie klienta” jest włączona jako jeden z celów certyfikacji.

  2. Upewnij się, że certyfikat ma dla niego wartość "OID".

pisałem na blogu o spożywanie Azure usługi zarządzania Windows API w Windows 8 aplikacji, które można przeczytać tutaj: http://gauravmantri.com/2012/09/08/consuming-windows-azure-service-management-api-in-a-windows-8-application/. Omówiłem te dwa zagadnienia, a potem jeszcze trochę.

Mam nadzieję, że to pomoże.

+0

Przetestowałem Twoje rozwiązanie, działa! Wielkie dzięki. –

Powiązane problemy