web-dev-qa-db-fra.com

Problème d'authentification lors du débogage dans VS2013 - iis express

J'essaie de récupérer le nom d'utilisateur Windows lors du débogage dans Visual Studio 2013. J'utilise simplement:

httpcontext.current.user.identity.name

Si j'exécute ceci sur mon serveur de développement, cela fonctionne bien, si je l'exécute en mode débogage sur une version précédente de Visual Studio, cela fonctionne également bien.

Mon problème est que si je lance ceci sur Visual Studio 2013, je reçois une chaîne vide.

Ma configuration Web est la suivante.

<system.web>
    <authentication mode="Windows"/>
    <identity impersonate="false"/>
    <authorization>
       <allow users="*"/>
    </authorization>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
</system.web>
101
Neil Watson

Pendant mes recherches, j'ai trouvé ma réponse, mais je ne peux pas trouver la réponse sur Internet. J'ai donc pensé partager ceci:

J'ai résolu mon problème en modifiant mon fichier applicationhost.config. Mon fichier a été enregistré dans le dossier "\ Mes documents\IISExpress\config".

Il semble que VS2013 ignorait mon fichier web.config et appliquait différentes méthodes d'authentification.

J'ai dû modifier cette partie du fichier pour ressembler à celle ci-dessous. En vérité, je n'ai modifié que anonymousAuthentication pour être false et le mode windowsAuthentication pour true.

<authentication>

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

  <basicAuthentication enabled="false" />

  <clientCertificateMappingAuthentication enabled="false" />

  <digestAuthentication enabled="false" />

  <iisClientCertificateMappingAuthentication enabled="false">
  </iisClientCertificateMappingAuthentication>

  <windowsAuthentication enabled="true">
    <providers>
      <add value="Negotiate" />
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>

</authentication>
128
Neil Watson

Je venais de passer de VS 2012 à VS 2013 et l'identité actuelle de l'utilisateur (HttpContext.User.Identity) apparaissait de manière anonyme.

J'ai essayé de changer le IIS express applicationhost.config, aucune différence.

La solution consistait à examiner les propriétés du projet Web, puis à appuyer sur F4 pour obtenir les propriétés du projet lorsque le niveau supérieur du projet est sélectionné. Ne faites pas un clic droit sur le projet et sélectionnez les propriétés, c'est quelque chose de complètement différent.

Changez l'authentification anonyme pour qu'elle soit désactivée et l'authentification Windows pour qu'elle soit activée.

Fonctionne comme de la sauce :)

211
Toby Simmerling

Dans Visual Studio 2013 ET VS15 (mais je suppose que c'est la même chose pour toutes les autres versions), appuyez simplement sur F4 et modifiez les deux propriétés suivantes: - Authentification anonyme: Disable - Windows Authentification: Activer

41
ThaNet

Dans VS2013 F4 sur votre projet pour afficher la fenêtre de propriétés, désactiver l'accès anonyme et activer "l'authentification Windows". 

Alors ça va marcher. Pas besoin de changer autre chose

39
James Pressley

VS 2015 change cela. Il a ajouté un dossier .vs à mon projet Web et le fichier applicationhost.config était présent. J'ai apporté les modifications suggérées (authentification de la fenêtre = true, anon = false) et il a commencé à fournir un nom d'utilisateur au lieu d'un blanc.

9
Tom McDonald

Ouvrez le fichier applicationHost.config situé dans le dossier C:\Users [ID utilisateur]\Documents\IISExpress\config. Dans ce fichier, modifiez les paramètres overrideModeDefault de anonymousAthentication et windowsAuthentication sur "Allow".

 <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Allow" />
                </sectionGroup>

Modifiez ensuite lockItem sur "false" pour AnonymousAuthenticationModule et WindowsAuthenticationModule.

  <system.webServer>
            <modules>
                <!--
                <add name="HttpCacheModule" lockItem="true" />
-->
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="false" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="false" />

Ces modifications permettront aux paramètres de configuration Web existants de remplacer le contenu du fichier applicationHost pour IIS Express.

8
ngiunta

Vous pouvez également modifier les propriétés du projet pour votre projet Web, choisissez "Web" dans les onglets de gauche, puis modifiez le menu déroulant Serveurs en "IIS local". Créez un nouveau répertoire virtuel et utilisez le gestionnaire IIS pour configurer votre pool de sites/applications à votre guise.

Je préfère cette méthode, car vous avez généralement un v-répertoire (ou site) local IIS à tester localement. Vous n'affecterez aucun autre site de cette façon non plus.

Web Project Properties

5
ScottLenart

Il semble que la bonne réponse soit fournie par l'utilisateur 3199240 ci-dessus. Cependant, comme Neil Watson l'a souligné, le fichier applicationhost.config est en jeu ici. 

Les modifications peuvent en réalité être effectuées dans le volet Propriété VS ou dans le fichier, mais à un autre endroit. Près du bas du fichier applicationhost.config se trouve un ensemble d’éléments d’emplacement. Chaque application pour IIS Express semble en posséder un. La modification des paramètres de l'interface utilisateur met à jour cette section du fichier. Vous pouvez donc modifier les paramètres via l'interface utilisateur ou modifier ce fichier. 

Voici un exemple avec l'autorisation anonyme anonyme et l'autorisation Windows active:

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

Ceci est équivalent dans l'interface utilisateur VS à:

Anonymous Authentication: Disabled
Windows Authentication: Enabled
1
EricksonG

F4 ne m'amène pas toujours à ce panneau. D'ailleurs, on dit souvent qu'une image vaut mille mots. 

 enter image description here

0
kakugiki