IIS Express Windows-Authentifizierung

245

Ich versuche, IIS Express mit VS2010 zum Hosten einer Silverlight-Anwendung zu verwenden. Ich habe meine Datei applicationhost.config geändert, um die richtigen Konfigurationseinstellungen ändern zu können. Ich habe Folgendes in meiner web.config:

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

Ich werde nicht authentifiziert und mein Domain-Service-Aufruf gibt einen Null-Datensatz als Benutzer zurück. Ich konnte dies nach der Installation von VS2010 SP1 BETA zum Laufen bringen, aber ich versuche, dies nur mit IIS Express zum Laufen zu bringen.

Wie aktiviere ich die Windows-Authentifizierung für die Verwendung mit IIS Express? Gibt es eine Konfigurationseinstellung, die mir fehlt?

Kennzeichen
quelle

Antworten:

276

Option 1 :

\My Documents\IISExpress\config\applicationhost.configDatei bearbeiten und WindowsAuthentication aktivieren, dh:

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

Option 2 :

Entsperren Sie den Abschnitt windowsAuthentication in \ Eigene Dateien \ IISExpress \ config \ applicationhost.config wie folgt

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

Ändern Sie die Überschreibungseinstellungen für die erforderlichen Authentifizierungstypen in "Zulassen".

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

Fügen Sie Folgendes in die web.config der Anwendung ein

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

Der folgende Link kann hilfreich sein: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Nach der Installation von VS 2010 SP1 ist möglicherweise die Anwendung von Option 1 + 2 erforderlich, damit die Windows-Authentifizierung funktioniert. Darüber hinaus müssen Sie möglicherweise die anonyme Authentifizierung in IIS Express applicationhost.config auf false setzen:

<authentication>

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

Für VS2015 befindet sich die Konfigurationsdatei für den IIS Express-Anwendungshost möglicherweise hier:

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

und die <UseGlobalApplicationHostFile>Option in der Projektdatei wählt die Standard- oder lösungsspezifische Konfigurationsdatei aus.

vikomall
quelle
Vielen Dank. Aber ich habe die oben genannten Optionen ausprobiert. Ich kann die Windows-Authentifizierung jedoch immer noch nicht verwenden. Ich denke, ich muss nur auf VS2010 / SP1 warten, um diese Funktionalität zu erhalten.
Mark
3
Option zwei hat bei mir funktioniert. Es hat eine Weile gedauert, diesen Beitrag zu finden!
TodK
Diese Frage trifft nicht mehr wirklich zu, seit VS2010 sp1 herausgekommen ist. Ich habe versucht, es zum Laufen zu bringen, ohne sp1 zu installieren. Ich vermute, dass sp1 beim ersten Mal etwas unternimmt, um es einzurichten, was ich einfach nicht herausfinden konnte. Ich kann fortfahren und diese Antwort als richtig markieren, obwohl dies nicht der Fall ist, da die Nichtinstallation von sp1 die Voraussetzung war.
Mark
1
Danke, Mann! NTLM deaktivierte die anonyme Authentifizierung.
Rob Angelier
4
In VS2015 wurde die IIS Express-Konfiguration in die Lösungsstruktur verschoben, insbesondere $ (SolutionDir) \. Vs \ config \ applicationhost.config. Leider wird die vorhandene Konfiguration unter MyDocuments \ IISExpress nicht berücksichtigt, sodass Anpassungen neu gelesen werden müssen.
Tedford
401

Visual Studio 2010 SP1 und 2012 haben die Unterstützung für IIS Express hinzugefügt, sodass keine spitzen Klammern mehr bearbeitet werden müssen.

  1. Wenn Sie dies noch nicht getan haben, klicken Sie mit der rechten Maustaste auf ein Projekt mit Webgeschmack und wählen Sie "IIS Express verwenden ...".
  2. Wählen Sie nach Abschluss das Webprojekt aus und drücken Sie, F4um das Eigenschaftenfenster zu fokussieren.
  3. Setzen Sie die Eigenschaft "Windows-Authentifizierung" auf Aktiviert und die Eigenschaft "Anonyme Authentifizierung" auf Deaktiviert.

Geben Sie hier die Bildbeschreibung ein

Ich glaube, diese Lösung ist den Optionen des Vikomalls überlegen.

  • Option 1 ist eine globale Änderung für alle IIS Express-Sites.
  • Option 2 belässt die Entwicklungs-Cruft in der web.config.
    • Außerdem wird es bei der Bereitstellung auf IIS 7.5 wahrscheinlich zu einem Fehler kommen, es sei denn, Sie befolgen das Verfahren zum Entsperren in der applicationHost.config Ihres IIS-Servers.

Die oben beschriebene UI-basierte Lösung verwendet standortspezifische Standortelemente in der applicationHost.config von IIS Express und lässt die App unberührt.

Weitere Informationen finden Sie hier: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

roryWoods
quelle
5
Um zu betonen, was ich verpasst habe: Das Eigenschaftenkontextmenü und die Alt-EnterVerknüpfung ersetzen die Details des Eigenschaftenbereichs nicht vollständig, mit denen Sie ändern können, ob die Windows-Authentifizierung aktiviert ist oder nicht. Verwenden F4oder klicken Sie auf den Eigenschaftenbereich, um die Eigenschaften tatsächlich anzuzeigen.
Kaleb Pederson
Ich hatte einige Tage mit dieser Aufgabe zu kämpfen, bevor ich mit diesem Artikel von vorne anfing : msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Ignorieren Sie im Grunde alles im ursprünglichen Beitrag und beginnen Sie mit einem " jungfräulich "applicationhost.config" und aktivieren Sie einfach die Einstellungen gemäß dieser Antwort. Endlich bekomme ich Windows Authentifizierung! Vielen Dank!!
DaveN59
Am Ende wird die Einstellung "IISExpressWindowsAuthentication" in ".csproj" von "aktiviert" in "deaktiviert" geändert. <IISExpressWindowsAuthentication> deaktiviert </ IISExpressWindowsAuthentication>
Cameron Taggart
7
Diese beiden Optionen sind für mich ausgegraut und deaktiviert. Irgendeine Idee warum?
Ahle
1
Die beiden Optionen sind abgeblendet, da Sie dies in Ihrer IIS Express-Konfiguration haben "und sie werden ausgraben
Micah Armantrout
9

Überprüfen Sie anhand der Antwort von booij boy, ob Sie die Funktion "Windows-Authentifizierung" in der Systemsteuerung -> Programme -> Windows-Funktionen aktivieren oder deaktivieren -> Internetinformationsdienste -> World Wide Web Services -> Sicherheit aktiviert haben

Außerdem scheint es einen großen Unterschied zu geben, wenn Firefox oder Internet Explorer verwendet werden. Nach dem Beschriften der "Windows-Authentifizierung" funktioniert es bei mir aber nur im IE.

Bienen73
quelle
2
Und damit es in Firefox funktioniert
bees73
5

Zusätzlich zu diesen großartigen Antworten können Sie im Kontext einer IISExpress-Entwicklungsumgebung und um den berüchtigten Fehler "system.web/identity@impersonate" zu vereiteln, einfach sicherstellen, dass die folgende Einstellung in Ihrer Datei applicationhost.config vorhanden ist .

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

Dies ermöglicht Ihnen mehr Flexibilität bei der Entwicklung und beim Testen. Stellen Sie jedoch sicher, dass Sie die Auswirkungen der Verwendung dieser Einstellung in einer Produktionsumgebung verstehen, bevor Sie dies tun.

Hilfreiche Beiträge:

Chiramisu
quelle
Ich bin
2

Klicken Sie im IIS-Manager auf Ihre Site. Sie müssen sich "in der Feature-Ansicht" befinden (und nicht in der "Inhaltsansicht").

Wählen Sie im IIS-Bereich der "Feature-Ansicht" das sogenannte Feature "Authentifizierung" und klicken Sie darauf. Hier können Sie die Windows-Authentifizierung aktivieren. Dies ist auch möglich (wie ich in einem der Vorschläge im Thread denke) durch eine Einstellung in der web.config (...)

Aber vielleicht haben Sie eine web.config, mit der Sie nicht zu viel herumspielen möchten. Dann wäre dieser Thread nicht zu viel Hilfe, weshalb ich diese Antwort hinzugefügt habe.


quelle
0

Diese Antwort kann hilfreich sein, wenn: 1) Ihre Site vor dem Upgrade auf Visual Studio 2015 und 2 mit der Windows-Authentifizierung gearbeitet hat und 2) Ihre Site versucht zu laden /login.aspx(obwohl auf Ihrer Site keine solche Datei vorhanden ist).

Fügen Sie dem appSettingsAbschnitt Ihrer Site die folgenden zwei Zeilen hinzu Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Theophilus
quelle
0

Aus dem gleichen Grund - VS 2015, .vs \ config \ applicationhost.config nicht sichtbar oder nicht verfügbar.

Standardmäßig ist der Ordner .vs ausgeblendet (zumindest in meinem Fall).

Wenn Sie den .vs-Ordner nicht finden können, führen Sie die folgenden Schritte aus.

  1. Klicken Sie mit der rechten Maustaste auf den Lösungsordner
  2. Wählen Sie "Eigenschaften".
  3. AttributesAktivieren HiddenSie im Abschnitt das Kontrollkästchen (Standard deaktiviert).
  4. Klicken Sie dann auf die Schaltfläche "Übernehmen"
  5. Das Bestätigungsfenster "Änderungen auf diesen Ordner, Unterordner und Dateien übernehmen" wird angezeigt. Wählen Sie die Option "OK".

    Wiederholen Sie die Schritte 1 bis 5, außer step 3wenn Sie diesmal uncheckdie zuvor aktivierte Option "Versteckt" auswählen müssen.

Jetzt sollte in der Lage sein, .vs Ordner zu sehen.

SatheeshN
quelle
0

Nachdem ich alles in den obigen Antworten getan hatte, stellte ich fest, dass ich Visual Studio nicht als Administrator ausführte. Nach dem Ausführen als Admin wurde das Problem behoben.

Alisson
quelle