2012-10-23 14 views
9

Używam interfejsów API Asp.net do dostarczania apisa do klienta (iPhone, Android, Mac OS, Internet, Windows, ...). Chcę zaimplementować pewne API z większymi zabezpieczeniami, które uniemożliwiają innym zrozumienie parametru w łączu (w przypadku zhakowania łącza).Jak mogę zaimplementować połączenie Https/SSL w Asp.Net Web API?

Moje pytanie brzmi: czy mogę użyć do tego protokołu Https/SSL? Czy to wystarczająco bezpieczne? Jeśli tak, czy powinienem zainstalować coś po stronie klienta, aby to wdrożyć?

Dzięki

Odpowiedz

10

To zależy od tego, dokąd idziesz do obsługi aplikacji ASP.NET Web API. Jeśli zamierzasz go hostować w IIS, nie musisz robić nic specjalnego poza konfigurowaniem SSL przez IIS.

Jedną z rzeczy, którą powinieneś zrobić, to wymusić HTTPS za pośrednictwem aplikacji. Można zaimplementować to z różnych sposobów (takich jak moduł IIS przekierowanie, itp), ale można też zrobić to na poziomie aplikacji z obsługi komunikatów:

public class RequireHttpsMessageHandler : DelegatingHandler { 

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { 

     if (request.RequestUri.Scheme != Uri.UriSchemeHttps) { 

      var forbiddenResponse = request.CreateResponse(HttpStatusCode.Forbidden); 
      forbiddenResponse.ReasonPhrase = "SSL Required"; 
      return Task.FromResult<HttpResponseMessage>(forbiddenResponse); 
     } 

     return base.SendAsync(request, cancellationToken); 
    } 
} 

HttpClient obsługuje również protokół SSL, tak jak każdy inny .NET klienci sieci. Spójrz na ten artykuł: http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx

+0

Będę gospodarzem mojej aplikacji Web API na AWS. Myślę, że mogę zainstalować i skonfigurować dla niego IIS, prawda? –

+1

@NguyenMinhBinh nie wiesz, jakiego rodzaju dostęp zapewnia usługa AWS w zakresie usług IIS, ale jeśli masz pełną kontrolę nad maszyną wirtualną, z pewnością. – tugberk

+0

Ok, mam to :) –