Non riesco a capire come implementare un filtro di autorizzazione in API Web utilizzando IAuthorizationFilter da System.Web.Http.Filters.Implementazione corretta di IAuthorizationFilter nell'API Web
Questo è un semplice filtro che ho scritto per rispondere a tutte le richieste non HTTPS con una 403 risposta proibito:
public class HttpsFilter : IAuthorizationFilter {
public bool AllowMultiple {
get {
return false;
}
}
public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation) {
var request = actionContext.Request;
if (request.RequestUri.Scheme != Uri.UriSchemeHttps) {
HttpResponseMessage response = request.CreateResponse(HttpStatusCode.Forbidden);
response.Content = new StringContent("<h1>HTTPS Required</h1>", Encoding.UTF8, "text/html");
actionContext.Response = response;
return new Task<HttpResponseMessage>(delegate() {
return response;
});
}
else
return continuation();
}
}
quello che ho scritto così corre lontano, ma quando provo ad accedere all'API sopra regolare http, si blocca e non ottengo mai una risposta.
http://aspnet.codeplex.com/sourcecontrol/latest#Samples/WebApi/BasicAuthentication/ReadMe.txt – Ali