Authentification Windows IIS Express


245

J'essaie d'utiliser IIS Express avec VS2010 pour héberger une application Silverlight. J'ai modifié mon fichier applicationhost.config pour permettre la modification des paramètres de configuration appropriés. J'ai les éléments suivants dans mon web.config:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

Je ne suis pas authentifié et mon appel de service de domaine renvoie un enregistrement nul en tant qu'utilisateur. J'ai pu le faire fonctionner après l'installation de VS2010 SP1 BETA, mais j'essaie de le faire fonctionner uniquement avec IIS Express.

Comment activer l'authentification Windows pour fonctionner avec IIS Express. Y a-t-il un paramètre de configuration qui me manque?

Réponses:


276

option-1 :

modifier le \My Documents\IISExpress\config\applicationhost.configfichier et activer windowsAuthentication, c'est-à-dire:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

option-2 :

Déverrouillez la section windowsAuthentication dans \ Mes documents \ IISExpress \ config \ applicationhost.config comme suit

<add name="WindowsAuthenticationModule" lockItem="false" />

Modifier les paramètres de remplacement pour les types d'authentification requis sur «Autoriser»

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Ajouter le suivant dans le web.config de l'application

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

Le lien ci-dessous peut être utile: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Après l'installation de VS 2010 SP1, l'application de l'option 1 + 2 peut être nécessaire pour que l'authentification Windows fonctionne. En outre, vous devrez peut-être définir l'authentification anonyme sur false dans IIS Express applicationhost.config:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

pour VS2015, le fichier de configuration de l'hôte d'application IIS Express peut être localisé ici:

$(solutionDir)\.vs\config\applicationhost.config

et l' <UseGlobalApplicationHostFile>option dans le fichier de projet sélectionne le fichier de configuration par défaut ou spécifique à la solution.


Merci. Mais j'ai essayé les options ci-dessus. Mais je ne parviens toujours pas à utiliser l'authentification Windows. Je suppose que je devrai simplement attendre VS2010 / SP1 pour obtenir cette fonctionnalité.
Mark

3
l'option deux a fonctionné pour moi. a pris un certain temps pour trouver ce poste!
TodK

Cette question ne s'applique plus vraiment depuis la sortie de VS2010 sp1. J'essayais de le faire fonctionner sans installer sp1. Je suppose que sp1 fait quelque chose pour le configurer la première fois que je n'arrivais pas à comprendre. Je peux aller de l'avant et marquer cette réponse comme correcte, bien que ce ne soit vraiment pas le cas, car la non-installation de SP1 était la condition préalable.
Mark

1
Merci mec! NTLM a fonctionné en désactivant l'authentification anonyme.
Rob Angelier

4
Dans VS2015, la configuration IIS Express a été déplacée dans la structure de la solution, en particulier $ (SolutionDir) \. Vs \ config \ applicationhost.config, malheureusement, elle ne prend pas en compte la configuration existante sous MyDocuments \ IISExpress, de sorte que toutes les personnalisations devront être lues de nouveau.
Tedford

401

Visual Studio 2010 SP1 et 2012 ont ajouté la prise en charge d'IIS Express, éliminant ainsi la nécessité de modifier les crochets angulaires.

  1. Si vous ne l'avez pas déjà fait, cliquez avec le bouton droit sur un projet Web et sélectionnez "Utiliser IIS Express ...".
  2. Une fois terminé, sélectionnez le projet Web et appuyez F4sur pour sélectionner le panneau Propriétés.
  3. Définissez la propriété «Authentification Windows» sur Activé et la propriété «Authentification anonyme» sur Désactivé.

entrez la description de l'image ici

Je pense que cette solution est supérieure aux options du vikomall.

  • L'option n ° 1 est un changement global pour tous les sites IIS Express.
  • L'option n ° 2 laisse le développement dans le web.config.
    • En outre, cela entraînera probablement une erreur lors du déploiement sur IIS 7.5, sauf si vous suivez la procédure de «déverrouillage» sur applicationHost.config de votre serveur IIS.

La solution basée sur l'interface utilisateur ci-dessus utilise des éléments d'emplacement spécifiques au site dans applicationHost.config d'IIS Express, laissant l'application intacte.

Plus d'informations ici: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx


5
Pour souligner ce que j'ai manqué - le menu contextuel des propriétés et le Alt-Enterraccourci ne supplantent pas complètement les détails du volet des propriétés qui vous permettent de changer si l'authentification Windows est activée ou non. Utilisez F4ou cliquez sur le volet des propriétés pour voir réellement les propriétés.
Kaleb Pederson,

J'ai eu du mal avec cette tâche pendant plusieurs jours avant de recommencer avec cet article: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Fondamentalement, ne tenez pas compte de tout dans le message d'origine, recommencez avec un " vierge "applicationhost.config et juste activer les paramètres selon cette réponse. Enfin, je reçois l'authentification Windows! Merci!!
DaveN59

Il finit par changer le paramètre IISExpressWindowsAuthentication de «activé» à désactivé »dans le .csproj. <IISExpressWindowsAuthentication> désactivé </IISExpressWindowsAuthentication>
Cameron Taggart

7
Ces 2 options sont grisées et désactivées pour moi. Une idée pourquoi?
poinçon

1
les 2 options sont grisées car vous les avez dans votre configuration IIS Express <section name = "anonymousAuthentication" overrideModeDefault = "Allow" /> <section name = "windowsAuthentication" overrideModeDefault = "Allow" /> supprimez la overrideModeDefault = "Allow "et ils disparaîtront
Micah Armantrout

9

En s'appuyant sur la réponse de booij boy, vérifiez si vous avez coché la fonction "authentification Windows" dans le Panneau de configuration -> Programmes -> Activer ou désactiver les fonctionnalités Windows -> Internet Information Services -> World Wide Web Services -> Security

En outre, il semble y avoir une grande différence lors de l'utilisation de Firefox ou d'Internet Explorer. Après avoir marqué "l'authentification Windows", cela fonctionne pour moi mais uniquement dans IE.


2
Et le faire fonctionner dans Firefox: markmonica.com/2007/11/20/…
bees73


5

En plus de ces excellentes réponses, dans le contexte d'un environnement de développement IISExpress, et afin de contrecarrer l'infâme erreur «system.web/identity@impersonate», vous pouvez simplement vous assurer que le paramètre suivant est en place dans votre fichier applicationhost.config .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

Cela vous permettra plus de flexibilité lors du développement et des tests, mais assurez-vous de bien comprendre les implications de l'utilisation de ce paramètre dans un environnement de production avant de le faire.

Messages utiles:


Atterri complètement par accident, mais cela a fonctionné :-)
joshmcode

2

Dans IIS Manager, cliquez sur votre site. Vous devez être "en vue des fonctionnalités" (plutôt qu'en "vue du contenu")

Dans la section IIS de la "vue des fonctionnalités", choisissez la fonction "authentification" et cliquez dessus. Ici, vous pouvez activer l'authentification Windows. Ceci est également possible (par je pense dans l'une des suggestions du fil) par un réglage dans le web.config (...)

Mais peut-être que vous avez un web.config avec lequel vous ne voulez pas trop scruter. Ensuite, ce fil ne serait pas trop utile, c'est pourquoi j'ai ajouté cette réponse.


0

Cette réponse peut aider si: 1) votre site fonctionnait avec l'authentification Windows avant la mise à niveau vers Visual Studio 2015 et 2) et votre site tente de se charger /login.aspx (même s'il n'existe aucun fichier de ce type sur votre site).

Ajoutez les deux lignes suivantes à la appSettingssection de votre site Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

0

Sur la même note - VS 2015, .vs \ config \ applicationhost.config n'est pas visible ou n'est pas disponible.

Par défaut, le dossier .vs est masqué (au moins dans mon cas).

Si vous ne parvenez pas à trouver le dossier .vs, suivez les étapes ci-dessous.

  1. Faites un clic droit sur le dossier Solution
  2. sélectionnez 'Propriétés'
  3. Dans la Attributessection, cliquez surHidden cochez la case (par défaut non cochée),
  4. puis cliquez sur le bouton 'Appliquer'
  5. Il affichera la fenêtre de confirmation «Appliquer les modifications à ce dossier, sous-dossier et fichiers», sélectionnez «OK».

    Répétez les étapes 1 à 5, sauf sur step 3, cette fois, vous avez besoin de uncheckl'option «Masqué» que vous avez cochée précédemment.

Maintenant devrait pouvoir voir le dossier .vs.


0

Après avoir tout fait dans les réponses ci-dessus, j'ai compris que je n'exécutais pas Visual Studio en tant qu'administrateur. Après avoir exécuté en tant qu'administrateur, le problème a été résolu.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.