Pregunta

El comodín ? representa a los usuarios no autenticados, mientras que * representa a todos los usuarios, autenticados y no autenticados. Mi libro muestra el siguiente ejemplo de autorización de URL:

<authorization>
  <deny users="?" />
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>


Pero el código anterior no tiene el mismo efecto que:

<authorization>
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>

o el autor también incluyó < deny users = "? " / > regla por alguna razón?

¿Fue útil?

Solución

ASP.NET otorga acceso desde el archivo de configuración como una cuestión de prioridad. En caso de un posible conflicto, la primera concesión que tiene lugar tiene prioridad. Entonces,

deny user="?" 

niega el acceso al usuario anónimo. Entonces

allow users="dan,matthew" 

otorga acceso a ese usuario. Finalmente, niega el acceso a todos. Esto se estremece cuando todos, excepto Dan, se le niega el acceso a Matthew.

Editado para agregar: y como señala @Deviant, denegar el acceso a personas no autenticadas no tiene sentido, ya que la última entrada también incluye las no autenticadas. Se puede encontrar una buena entrada de blog sobre este tema en: Blog de Guru Sarkar

Otros consejos

" En tiempo de ejecución, el módulo de autorización itera a través de los elementos de permiso y denegación, comenzando en el archivo de configuración más local, hasta que el módulo de autorización encuentra la primera regla de acceso que se ajusta a una cuenta de usuario particular. Luego, el módulo de autorización otorga o deniega el acceso a un recurso URL dependiendo de si la primera regla de acceso encontrada es una regla de permiso o denegada. La regla de autorización predeterminada es. Por lo tanto, de forma predeterminada, el acceso está permitido a menos que se configure de otra manera.

Artículo en MSDN

deny = * means deny everyone
deny = ? means deny unauthenticated users

En su primer ejemplo, negar * no afectará a dan, ya que ya estaban permitidos por la regla anterior.

Según los documentos, aquí no hay diferencia en sus 2 conjuntos de reglas.

El ejemplo 1 es para aplicaciones asp.net que usan autenticación de formularios. Esta es una práctica común para las aplicaciones de Internet porque el usuario no está autenticado hasta que se autentica en algún módulo de seguridad.

El ejemplo 2 es para la aplicación asp.net que usa la autenticación de Windows. La autenticación de Windows usa Active Directory para autenticar a los usuarios. El impedirá el acceso a su aplicación. Uso esta función en aplicaciones de intranet.

Vea estos dos enlaces:

negar elemento para autorización (esquema de configuración de ASP.NET) http://msdn.microsoft.com /en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx

permitir elemento para autorización (esquema de configuración de ASP.NET): http://msdn.microsoft.com /en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx

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