56

El comodín ? representa usuarios no autenticados, mientras que * representa a todos los usuarios, autenticados y no autenticados. Mi libro muestra el siguiente ejemplo de autorización de direcciones URL:¿Por qué <deny users = "?" /> incluido en el siguiente ejemplo?

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


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

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

o no el autor también incluye <deny users="?" /> regla por una razón ?

Respuesta

74

ASP.NET concede acceso desde el archivo de configuración como una cuestión de precedencia. En caso de un conflicto potencial, la primera concesión que ocurre tiene prioridad. Por lo tanto,

deny user="?" 

niega el acceso al usuario anónimo. Luego

allow users="dan,matthew" 

otorga acceso a ese usuario. Finalmente, niega el acceso a todos. Esto se suaviza ya que todos, excepto Dan, matthew se les niega el acceso.

Editado para agregar: y como @Deviant señala, negar el acceso a no autenticado no tiene sentido, ya que la última entrada también incluye las no autenticadas. Una buena entrada de blog la discusión de este tema se puede encontrar en: Guru Sarkar's Blog

33

"En tiempo de ejecución, el módulo de autorización recorre los elementos de permitir y denegar, comenzando en el archivo de configuración más local, hasta que el módulo de autorización encuentre la primera regla de acceso que se ajuste a una cuenta de usuario en particular. o deniega el acceso a un recurso URL dependiendo de si la primera regla de acceso encontrada es una regla de permitir o denegar. La regla de autorización predeterminada es. Por lo tanto, de manera predeterminada, se permite el acceso a menos que se configure de otra manera ".

artículo en MSDN

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

En su primera negar ejemplo * no afectará dan, Mateo, puesto que ya se les permitió por la regla anterior.

De acuerdo con los documentos, aquí no hay diferencia en sus 2 conjuntos de reglas.

3

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

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

1

ver este dos enlaces:

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

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

+3

¿Puede explicarnos cómo responde esto a la pregunta? Se espera que las respuestas funcionen por sí solas con enlaces utilizados como referencia. – Edward

Cuestiones relacionadas