¿Qué se supone que debe hacer la configuración Unrestricted = false en PrincipalPermission?

1

Estoy realizando tareas de mantenimiento en una aplicación de formularios web ASP.net de 10 años. Tiene una capa empresarial que tiene sus métodos protegidos por System.Security.Permissions.PrincipalPermissionAttribute , como este:

[PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "2,3", Unrestricted = true)]
public void Foo(int bar)

Se utiliza una identidad y un principio de IP personalizados. El principal personalizado implementa bool IsInRole(string role) e interpreta el parámetro de rol como una lista de roles separados por comas para verificar.

Supongo que una vez todo funcionó bien, pero, actualmente, el método IsInRole nunca se llama.

Por supuesto, mi atención se dirigió hacia la propiedad sin restricciones . La documentación de MSDN no aclara mucho . Acabo de intentar con unrestricted = false y he aquí que, la validación saltó a la vida.

Hasta donde puedo rastrear el código, el parámetro sin restricciones siempre se ha pasado como verdadero. Por lo tanto, estoy dudando de simplemente cambiar esto a falso en todas partes.

¿Esta propiedad realmente tiene el efecto de decir:

  

"Oye, estoy declarando permisos aquí, pero en realidad, no importa y sigue adelante".

¿O es algo más sutil?

    
pregunta R. Schreurs 14.03.2017 - 18:59
fuente

1 respuesta

1

No es más sutil.

Configurar Unrestricted = true significa que coincidirá con cualquier principal, por lo que establecer las propiedades Authenticated y Role no tiene sentido, porque una vez que el marco ve Unrestricted = true , siempre establecerá Authenticated = true y Role = null y La demanda siempre tendrá éxito, independientemente de la principal.

Por lo tanto, me parece que establecerlo en falso (o simplemente eliminarlo del atributo) es lo que probablemente quieras hacer.

    
respondido por el Xander 14.03.2017 - 21:04
fuente

Lea otras preguntas en las etiquetas