我正在使用Azure ACS Labs使用FederatedServiceCredentials来验证Active Federation的用户身份。现在,我想从WCF服务中访问用户的声明。
根据this article,请求线程可以访问声明...任何人都可以解释或演示这意味着什么?
答案 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;
}
}