通过附加到请求线程的安全主体访问声明,而不是AuthorizationContext

时间:2011-03-31 22:57:48

标签: wcf azure claims-based-identity federated-identity wif

我正在使用Azure ACS Labs使用FederatedServiceCredentials来验证Active Federation的用户身份。现在,我想从WCF服务中访问用户的声明。

根据this article,请求线程可以访问声明...任何人都可以解释或演示这意味着什么?

1 个答案:

答案 0 :(得分:2)

请求线程是在服务器上执行服务API的线程。从该线程(也就是在您的服务API中),您可以访问Thread.CurrentPrincipal.Identity。这将是一个ClaimsIdentity,其中包含您的STS授予您的声明。例如:

 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;
   }  
 }