如何在Asp.Net Web API上实现Https / SSL连接?

时间:2012-10-23 08:25:54

标签: c# .net ssl https asp.net-web-api

我使用Asp.net web API为客户端提供api(iphone,android,mac os,web,windows,...)。我想实现一些具有更高安全性的API,我阻止其他一些人理解链接中的参数(以防他们破解链接)

我的问题是:我可以使用Https / SSL吗?它足够安全吗?如果是,我应该在客户端安装任何东西来实现吗?

由于

1 个答案:

答案 0 :(得分:12)

这取决于您将托管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也像任何其他.NET Web客户端一样支持SSL。看看这篇文章:http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx