如何在WCF服务中列出请求用户的角色?

时间:2009-03-30 12:54:03

标签: c# .net wcf security-roles

刚刚开始掌握WCF安全性。如何在服务中列出用户的角色?

E.g。

// Could use declarative security here, i.e. using PrincipalPermission attribute
public string MyService()
{
    // Would like some code that does something like:
    foreach( Role role in CurrentUser.Roles )
    {
    }
}

由于

2 个答案:

答案 0 :(得分:2)

处理Windows群组时,您可以使用以下代码:

foreach (IdentityReference idRef in WindowsIdentity.GetCurrent().Groups)
{
    Console.WriteLine(idRef.Translate(typeof(NTAccount)).Value);
}

答案 1 :(得分:2)

.NET中基于角色的安全基础结构(即IPrincipal)不允许获取用户的所有角色。您只能查询用户是否处于特定角色(通过IPrincipal.IsInRole(“role-name”))。

但是,如果您不介意与特定的身份验证/授权设置绑定,则可以使用解决方案。例如,另一张海报指出了在使用Windows身份验证时如何获取用户的角色。