Question

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?

Était-ce utile?

La solution

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

deny user="?" 

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

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é. Vous trouverez une bonne entrée de blog traitant de ce sujet à l'adresse suivante: Blog du gourou Sarkar

Autres conseils

" Au moment de l'exécution, le module d'autorisation effectue une itération parmi 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 adaptée à 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 s’il est configuré autrement. "

Article dans MSDN

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

Dans votre premier 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 deux ensembles de règles.

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.

Voir ces deux liens:

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top