2010-07-26 12 views
1

J'essaie de contrôler l'accès à mon site Web avec Windows intégré.Contrôle d'accès avec web.config

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <authentication mode="Windows"/> 
    <authorization> 
    <deny users="?"/> 
    <allow roles="DOMAIN\The_group_that_can_access_it"/> 
    </authorization> 
    ... 
</system.web> 
</configuration> 

Sauf que, ce code ne fonctionne pas. Je peux y accéder si je suis un membre de ce groupe ou non. Qu'est-ce qui ne va pas? J'ai regardé un peu de code, et j'ai pensé que je devais peut-être changer le ? pour un *, mais cela semble nier tout simplement.

Merci,

+0

Vous avez refusé l'utilisateur anonyme (?), Alors que vous avez besoin de refuser chaque utilisateur (*) – Mostafa

Répondre

3

Vous n'avez pas une déclaration nier explicitement, vous devez ajouter l'entrée suivante à la fin des déclarations:

<deny users="*" /> 

Et vous pouvez retirer le <deny users="?"/> qui peut nier les utilisateurs non authentifiés . Le final <deny users="*" /> les reniera de toute façon. Alors seulement votre groupe devrait avoir accès. Le résultat final devrait être:

<authorization> 
    <allow roles="DOMAIN\The_group_that_can_access_it"/> 
    <deny users="*"/> 
</authorization> 

En règle générale, fermez toujours vos listes de contrôle d'accès avec un refus explicite tout ou refuser toute une.

+0

, j'ai essayé (comme mentionné) en utilisant le '*' à la place, mais cela ne fonctionnait toujours pas ... l'ordre des déclarations importe-t-il? (autoriser les rôles en premier, refuser en second lieu?) – baron

+1

Oui, permettez d'abord aux rôles, puis refusez tout le monde. –

+0

Aléatoire, votre exactement à droite. Je n'aurais pas pensé que ça avait de l'importance. Merci – baron