Autenticación de reclamaciones con OWIN Self Hosted WebApi

Estoy auto hospedando WebApi con la siguiente configuración:

Visual Studio 2012 / .NET 4.0

public void Configuration(IAppBuilder appBuilder)
{
    var config = new HttpConfiguration();

    // authentication
    config.MessageHandlers.Add(new Shield.PresharedKeyAuthorizer());

    // routing
    config.Routes.MapHttpRoute(
        name: "Default",
        routeTemplate: "{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

    appBuilder.UseWebApi(config);
}

Tengo una configuración de prueba simple con el siguienteDelegatingHandler para crear un reclamo y adjuntarlo al hilo actual.

public class PresharedKeyAuthorizer : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        var claims = new List<Claim>();
        claims.Add(new Claim(ClaimTypes.Name, "superstar"));

        var identity = new ClaimsIdentity(claims, "PresharedKey");
        var principal = new ClaimsPrincipal(identity);

        Thread.CurrentPrincipal = principal;
        if (HttpContext.Current != null)
            HttpContext.Current.User = principal;

        return base.SendAsync(request, cancellationToken);
    }
}

Sin embargo, cuando golpeo elApiController que está marcado con elAuthorize Atributo, no reconoce la autenticación.

[Authorize]
public class FilesController : ApiController
{
    public IEnumerable<string> Get()
    {
        return new string[] { "Secure File A", "Secure File B" };
    }
}

La eliminación de laAuthorize atributo y establecer un punto de interrupción, puedo ver que la propiedad RequestContext.Principal es de hecho nula. La solicitud funciona aleta sin laAuthorize atributo, por lo que sé que la configuración del auto hosting es correcta, pero debo faltar algo en la tubería de autenticación.

¿Qué me estoy perdiendo para permitir que esa reclamación trabaje contra elAuthorize ¿atributo?

Esta respuesta relacionada con el mismo enfoque parece funcionar cuando está alojada por IIS:https://stackoverflow.com/a/14872968/118224

Respuestas a la pregunta(1)

Su respuesta a la pregunta