Построил self hosted WEB API, стоит задача чтобы все работало только через HTTPS.
Я создал self signed SSL сертификат. Натравил этот сертификат на мой WEB API согласно этой статье (в netsh командах понятное дело подставил мои данные):
https://chanmingman.wordpress.com/2015/ ... d-web-api/" onclick="window.open(this.href);return false;
Теперь через HTTPS все отлично работает. Но.. надо теперь запретить клиентам обращаться к сервису через HTTP протокол.
На данный момент если клиент обращается к сервису через просто HTTP то он получает ошибку 504 (Timeout) в ответ. То есть до ApiController даже вызов не доходит. Это плохо, потому что Timeout ответ занимает довольно долгое время и при желании можно сделать Denial of Service.
Я создал специальный класс:
Code: Select all
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.HttpVersionNotSupported)
{
ReasonPhrase = "HTTPS Required"
};
actionContext.Response = httpResponseMessage;
return;
}
base.OnAuthorization(actionContext);
}
}
Code: Select all
[RequireHttps]
public class SubmissionsController : ApiController
{
}
Как быть в этой ситуации?
Спасибо