Estoy tratando de asegurar un servicio WCF usando cuentas de Windows. El servicio debería ejecutarse en muchos sistemas con diferentes idiomas. ¿Cómo puedo establecer una PrincipalPermission que tenga nombres de roles independientes del idioma?¿Cómo establecer un nombre de rol PrincipalPermission en varios idiomas?
He encontrado soluciones feas como ésta.
[PrincipalPermission(SecurityAction.Demand, Role = "Builtin\\Administrators")] // English
[PrincipalPermission(SecurityAction.Demand, Role = "Vordefiniert\\Administratoren")] // German
public string HelloWorld()
{
return "Hello";
}
No creo que esta sea una buena solución, ¿hay alguna manera de hacer que este lenguaje sea independiente? ¿Hay alguna forma de usar el SID de la cuenta en lugar de una cadena?
No, no funciona, la lógica principal está en el método WindowsPrincipal.IsInRole (cadena). Miré con reflector y no encontré ninguna "traducción" de los nombres de los roles. a modo de prueba de su auto: WindowsPrincipal director = new WindowsPrincipal (WindowsIdentity.GetCurrent()); bool english = principal.IsInRole ("Builtin \\ Administradores"); bool german = principal.IsInRole ("Vordefiniert \\ Administratoren"); Yo estaba tan sorprendido como usted es, podría ser que me falta algo ... –
Estoy sorprendido y aturdido ..... sowas deppertes auch! Die Spinnen, die Microsofties :-) –
@marc_s: Estoy de acuerdo, en el pasado, esto también me sorprendió al sincronizar LDAP y escribir instaladores. –