2011-03-31 2 views
1

Je travaille avec le Azure ACS Labs où il utilise FederatedServiceCredentials pour authentifier les utilisateurs pour Active Federation. Maintenant, je veux accéder aux revendications de l'utilisateur à partir du service WCF.Accès aux revendications via le principal de sécurité attaché au thread de la demande, par rapport à AuthorizationContext

Selon this article, les revendications sont accédées par le thread de demande ... Quelqu'un peut-il expliquer ou démontrer ce que cela signifie?

Répondre

2

Le thread de demande est le thread qui exécute l'API de service sur le serveur. À partir de ce thread (aka dans votre API de service), vous pouvez accéder à Thread.CurrentPrincipal.Identity. Ce sera une ClaimsIdentity, qui contient les réclamations qui vous sont accordées par votre STS. Par exemple:

class MyService:IService 
{ 
    // code running on wcf server 
    bool AdminOnlyApi() 
    {  
    var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity; 

    // fail all non admin callers. 
    if (!identity.Claims.Exists(c=>c.ClaimType=="role" && c.Value=="Admin")) 
    { 
     throw new SecurityException("Access is denied."); 
    } 
    return True; 
    } 
} 
Questions connexes