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

Ngu*_*inh 13 .net c# ssl https asp.net-web-api

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

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

谢谢

tug*_*erk 13

这取决于您将托管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);
    }
}
Run Code Online (Sandbox Code Playgroud)

HttpClient也像任何其他.NET Web客户端一样支持SSL.看看这篇文章:http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx