A autorização foi negada ao criar a API da Web do ASP.NET com validação de chave da API
Desejo autorizar minha API da web com uma chave, mas sempre diz "A autorização foi negada para esta solicitação". O seguinte é o último código que eu tentei.
Esta é a classe do manipulador de delegação:
// Message Handler class
public class APIKeyFilter: DelegatingHandler
{
// Default API Key
private const string APIKEY = "b018a9c5105d427127e";
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var query = request.RequestUri.ParseQueryString();
string key = query["key"];
if (APIKEY!=key)
{
var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
var tsc = new TaskCompletionSource<HttpResponseMessage>();
tsc.SetResult(response);
return tsc.Task;
}
return base.SendAsync(request, cancellationToken);
}
}
Esta é a classe global:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configuration.MessageHandlers.Add(new Filter.APIKeyFilter());
}
}
Este é o meu controlador api:
[Authorize]
public class CategoriesController : ApiController
{
private WebAPI2Context db = new WebAPI2Context();
// GET: api/Categories
public IQueryable<Category> GetCategories()
{
return db.Categories;
}
}
Existe alguma maneira de corrigir isso? Eu tento pesquisar no google, todos os resultados que achei não funcionaram para mim.