web-dev-qa-db-fra.com

Pourquoi <deny users = "?" /> inclus dans l'exemple suivant?

Le ? Le caractère générique représente des utilisateurs non authentifiés tandis que * représente tous les utilisateurs, authentifiés et non authentifiés. Mon livre présente l'exemple suivant d'autorisation d'URL:

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


Mais le code ci-dessus n’a-t-il pas le même effet que:

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

ou l'auteur a-t-il également inclus <deny users="?" /> règle pour une raison?

69
SourceC

ASP.NET accorde un accès prioritaire à partir du fichier de configuration. En cas de conflit potentiel, la première subvention en vigueur a la priorité. Alors,

deny user="?" 

refuse l'accès à l'utilisateur anonyme. ensuite

allow users="dan,matthew" 

accorde l'accès à cet utilisateur. Enfin, il refuse l'accès à tout le monde. Tout le monde sauf Dan, Matthew se voit refuser l'accès.

Modifié pour ajouter: et comme @Deviant le souligne, refuser l'accès à non authentifié est inutile, car la dernière entrée inclut également non authentifié. Une bonne entrée de blog traitant de ce sujet peut être trouvée à: Blog de Guru Sarkar

83
Cyberherbalist

"Au moment de l'exécution, le module d'autorisation parcourt les éléments allow et deny, en commençant par le fichier de configuration le plus local, jusqu'à ce qu'il trouve la première règle d'accès correspondant à un compte d'utilisateur particulier. Ensuite, le module d'autorisation accorde ou refuse l'accès à une ressource d'URL selon que la première règle d'accès trouvée est une règle d'autorisation ou de refus. La règle d'autorisation par défaut est. Ainsi, par défaut, l'accès est autorisé sauf configuration contraire. "

Article à MSDN

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

Dans votre 1er exemple, nier * n'affectera pas dan, matthew puisqu'ils étaient déjà autorisés par la règle précédente.

Selon la documentation, il n'y a pas de différence entre vos 2 jeux de règles.

38
Chad Grant

L'exemple 1 concerne les applications asp.net utilisant l'authentification des formulaires. C'est une pratique courante pour les applications Internet, car l'utilisateur n'est pas authentifié jusqu'à authentification par rapport à un module de sécurité.

L'exemple 2 concerne une application asp.net utilisant l'authentification de Windows. L'authentification Windows utilise Active Directory pour authentifier les utilisateurs. Cela empêchera l'accès à votre application. J'utilise cette fonctionnalité sur les applications intranet.

4

Voir ces deux liens:

nier Element pour autorisation (schéma des paramètres ASP.NET) http://msdn.Microsoft.com/en-us/library/vstudio /8aeskccd%28v=vs.100%29.aspx

autorise l'élément à autoriser (schéma des paramètres ASP.NET): http://msdn.Microsoft.com/en-us/library/ vstudio/acsd09b0% 28v = vs.100% 29.aspx

1
M.R