2012-10-23 52 views
9

我使用Asp.net web APIs爲客戶端(iphone,android,mac os,web,windows,...)提供apis。我想實現一些更安全的API,這可以防止其他人瞭解鏈接中的參數(以防他們破解鏈接)如何在Asp.Net Web API上實現Https/SSL連接?

我的問題是:我可以使用Https/SSL進行此操作嗎?它足夠安全嗎?如果是的話,我應該在客戶端安裝任何東西來實現這一點?

謝謝

回答

10

這取決於您要在哪裏託管ASP.NET Web API應用程序。如果您要在IIS下託管它,除了通過IIS配置SSL之外,您無需執行任何其他特殊操作。

你應該做的一件事IMO就是通過你的應用強制HTTPS。你可以用不同的方式(如IIS URL重定向模塊等)實現這一點,但你也可以做到這一點,在同一個消息處理應用程序級:

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還支持SSL,就像任何其他.NET網絡客戶端。看看這篇文章:http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx

+0

我將在AWS上託管我的Web API應用程序。我想我可以爲它安裝和配置IIS,對吧? –

+1

@NguyenMinhBinh不確定AWS爲您提供了什麼樣的訪問方式,但是如果您完全控制了您的虛擬機,當然。 – tugberk

+0

好吧,我明白了:) –