web-dev-qa-db-fra.com

web.config dans le dossier permettant l'authentification de l'utilisateur tout ou pas

J'ai un dossier avec plusieurs pages aspx de sondage. Je dois définir des autorisations sur ces pages aspx. Il y a 5 pages différentes et une seule permet à certains utilisateurs d'accéder. J'ai ajouté un fichier web.config pour autoriser et refuser les utilisateurs, mais cela ne fonctionne pas. Si j'autorise mon nom d'utilisateur et que j'ajoute un deny="?", je n'y ai pas accès, mais si j'ajoute un autre utilisateur, supprime le mien et supprime l'option de refus, j'obtiens la permission de me connecter au système. Je peux obtenir un accès si je refuse, mais tous les utilisateurs obtiennent un accès à la page. 

En ajoutant mes informations d'identification d'utilisateur et en refusant tous les utilisateurs anonymes, je n'ai pas accès. Quelqu'un peut-il me diriger s'il vous plaît dans la bonne direction de ce que je fais mal? Peut-il être qu'il ne lit pas ou ne prend pas mes informations d'identification d'ouverture de session Windows? J'utilise Visual Studio 2012, framework d'entité.

Voici ce que j'ai fait:

   //Web Config that allows and denies:
   <?xml version="1.0"?>
        <configuration>
        <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
     </system.web>

    <location path="QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="DomainName\User2" />
        <deny users="?" /> 
      </authorization>
    </system.web>
    </location>
    </configuration>

J'ai défini mon mode d'authentification sur Windows.

EDITIl semble que les autorisations aient été définies de manière incorrecte. Mais ça ne marche toujours pas. Lorsque je refuse *, mais permets à UTILISATEUR1, l'utilisateur n'a pas accès, même lorsqu'il est invité à entrer une demande de connexion. La fenêtre de dialogue de connexion boks continue à apparaître 3 fois avec même si les utilisateurs ont accès. le faire nier? (anonyme) permet à tout le monde d’y avoir accès, même si je supprime le refus et que je ne dispose que de la balise allow avec USER1, le reste des utilisateurs y ayant toujours accès ... J’exécute localement, mais même sur le IIS lors de la configuration de l'authentification avec (Windows et l'authentification de base) fait exactement la même chose ....

EDIT C’est le code que j’utilise actuellement. Seuls 3 utilisateurs sont autorisés dans ce chemin "". Ce fichier web.config se trouve dans le dossier d’enquête avec les 5 types d’enquêtes différents. Seule cette enquête devrait permettre à certains utilisateurs, le reste des enquêtes accessibles à tous .... 

     <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>

  <location path="QualityCheckSurvey.aspx">
    <system.web>

      <authorization>
        <deny users="?" />
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>

    </system.web>
  </location> 

Dans mon site Web principal, à la racine de l'application, j'ai défini le mode d'authentification sur Windows:

     <authentication mode="Windows">

<!--<forms loginUrl="~/Account/Login.aspx" timeout="2880" />-->
    </authentication>
12
Kerieks

Sur votre question, vous avez dit que vous avez un nom de dossier, mais sur le fichier web.config, vous n'avez donné que le nom du fichier sur le chemin. Utilisez le nom de pli/filename.aspx comme ci-dessous. Utilisez deny users = "*" au lieu de deny users = "? '

<location path="foldername/QualityCheckSurvey.aspx">
    <system.web>
        <authorization>
            <allow users="DomainName\User2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

MODIFIER

On dirait que vous avez plusieurs fichiers web.config dans la même application. Pour éviter toute confusion, supprimez simplement celui du dossier de sondage et du dossier racine web.config, ajoutez ce code.

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <authentication mode="Windows" />
    </authorization>
  </system.web>

  <location path="survey/QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location> 

Je suppose que le dossier d'enquête est à l'intérieur du dossier racine. 

12
Cherian M Paul

Correction de cette erreur si l'authentification Windows est ajoutée au projet après sa création

C'est une bouchée. J'avais ce problème lorsque j'ai ajouté l'authentification Windows à un projet existant. Avant que cela fonctionne, je devais faire quelques choses clés:

1. Dans l'Explorateur de solutions, cliquez sur le projet, puis appuyez sur F4. Cela devrait ouvrir les propriétés du projet. 
2. Dans les propriétés du projet et sous le serveur de développement, apportez les modifications suivantes: 
- Authentification anonyme: désactivée 
- Authentification Windows: activée 
3. Incluez les éléments suivants dans le Web.config sous <system.web>:

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

4. Toujours dans le Web.config sous <appSettings>:

<add key="owin:AutomaticAppStartup" value="false"/>


C'est ce qui a fonctionné pour moi. Si je fais quelque chose de mal, s'il vous plaît faites le moi savoir.
J'espère que cela aidera les futurs utilisateurs de l'authentification Windows après la création du projet.

0
Trevor Nestman
<deny users="?" /> 
<allow users="DomainName\User2" />
<deny users="*" /> 
0
Samiey Mehdi