Pergunta

Apenas começou a chegar ao confronto com a segurança WCF. Como faço para listar papéis de um usuário ao serviço?

por exemplo.

// 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 )
    {
    }
}

Graças

Foi útil?

Solução

Quando se tratar de grupos do Windows que você pode usar este código:

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

Outras dicas

A infra-estrutura baseada em funções de segurança em .NET (ie IPrincipal) não permite buscar todos os papéis de um usuário. Você só pode perguntar se um usuário está em um papel específico (via IPrincipal.IsInRole ( "role-name")).

No entanto, existem soluções, se você não se importa de ser amarrado a uma determinada configuração de autenticação / autorização. Por exemplo, um outro cartaz apontado como obter funções do usuário ao utilizar a autenticação do Windows.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top