Pregunta

acaba de comenzar llegar a enfrentarse con la seguridad de WCF. ¿Cómo enumero los roles de un usuario en el servicio?

por ejemplo.

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

Gracias

¿Fue útil?

Solución

Cuando se trata de grupos de Windows puede utilizar este código:

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

Otros consejos

La infraestructura de seguridad basada en funciones en .NET (es decir IPrincipal) no permite ir a buscar todos los roles de un usuario. Sólo puede preguntar si un usuario está en un papel específico (a través de IPrincipal.IsInRole ( "role-name")).

Sin embargo, hay soluciones si no te importa estar atado a una configuración de la autenticación / autorización especial. Por ejemplo, otro cartel señaló cómo conseguir los roles del usuario al utilizar la autenticación de Windows.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top