Warum ist meine ClaimsIdentity IsAuthenticated immer falsch (für Web-API-Autorisierungsfilter)?

In einer Web-API-Projekt bin ich überschreiben der normalen Authentifizierung, um zu überprüfen, Token anstelle. Der code sieht ungefähr so aus:

if ( true ) //validate the token or whatever here
{
    var claims = new List<Claim>();
    claims.Add( new Claim( ClaimTypes.Name, "MyUser" ) );
    claims.Add( new Claim( ClaimTypes.NameIdentifier, "MyUserID" ) );
    claims.Add( new Claim( ClaimTypes.Role, "MyRole" ) );

    var claimsIdentity = new ClaimsIdentity( claims );

    var principal = new ClaimsPrincipal( new[] { claimsIdentity } );
    Thread.CurrentPrincipal = principal;
    HttpContext.Current.User = principal;
}

Und dann später, wenn ich das [Authorize] Attribut zu einem controller, es nicht zu genehmigen.

Debug-code bestätigt das gleiche Verhalten:

//ALWAYS FALSE!
if ( HttpContext.Current.User.Identity.IsAuthenticated ) {
    //do something
}

Warum er denke, dass der Benutzer nicht authentifiziert ist, obwohl ich schon gebaut, eine gültige "ClaimsIdentity" - und zugeordnet es der thread?

InformationsquelleAutor der Frage explunit | 2013-11-27

Schreibe einen Kommentar