¿Cómo enumero los roles del usuario que solicita un servicio WCF?
-
22-08-2019 - |
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
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