web-dev-qa-db-de.com

Verwenden der Windows-Authentifizierung in ASP.NET

Ich versuche, die Windows-Authentifizierung in meiner ASP.NET-Anwendung zu verwenden. Wenn ich versuche, die App anzuzeigen, werde ich auf eine Anmeldeseite weitergeleitet. Wie kann ich es zum Laufen bringen, ohne mich manuell über den Browser anmelden zu müssen?

web.config

  <system.web>
    <authentication mode="Windows"></authentication>
    <anonymousIdentification enabled="false"/>
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>
    <customErrors mode="Off"></customErrors>
    <identity impersonate="true"></identity>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime />
  </system.web>

fehler nach dem Update IIS Express

Most likely causes:
No authentication protocol (including anonymous) is selected in IIS.
Only integrated authentication is enabled, and a client browser was used that does not support integrated authentication.
Integrated authentication is enabled and the request was sent through a proxy that changed the authentication headers before they reach the Web server.
The Web server is not configured for anonymous access and a required authorization header was not received.
The "configuration/system.webServer/authorization" configuration section may be explicitly denying the user access.

applicationhost.config

<authentication>
  <anonymousAuthentication enabled="false" />
  <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>
15
Antarr Byrd

Ich konnte es zum Laufen bringen, indem ich den Verhandlungsanbieter entfernte.

  <windowsAuthentication enabled="true">
    <providers>
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>
2
Antarr Byrd

Windows-Authentifizierung mit IISExpress

Aktualisieren Sie Ihre web.config

Stellen Sie sicher, dass Ihre web.config-Datei sowohl die Windows-Authentifizierung aktiviert als auch die anonyme Authentifizierung verweigert. HttpContext.Current.User.Identity.Name Ist leer, wenn die App eine anonyme Authentifizierung durchführt. Deine Konfiguration sollte ungefähr so ​​aussehen:

<authentication mode="Windows" />
<authorization>
    <deny users="?"/>
</authorization>

Fehler 401.2 Nicht autorisiert Manchmal wird der Fehler 401.2 Unauthorized: Logon failed due to server configuration error Angezeigt. Überprüfen Sie in diesem Fall, ob Sie berechtigt sind, dieses Verzeichnis oder diese Seite basierend auf den von Ihnen angegebenen Anmeldeinformationen anzuzeigen. Stellen Sie außerdem sicher, dass die Authentifizierungsmethoden auf dem Webserver aktiviert sind.

Aktualisieren der applicationhost.config

Möglicherweise müssen Sie auch die IISExpress-Datei applicationhost.config aktualisieren (keine Sorge, ich wusste es auch nicht). Dies ist im Wesentlichen die Dateiversion des Konfigurationstools IIS=), mit dem Sie den Webserver selbst konfigurieren können. Das Auffinden der Datei applicationhost.config Kann schwierig sein.

%userprofile%\documents\iisexpress\config\applicationhost.config

oder

%userprofile%\my documents\iisexpress\config\applicationhost.config

Wenn Sie es gefunden haben, aktualisieren Sie die folgenden Zeilen (achten Sie besonders auf enabled=true):

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

Dies ist der Artikel

11
malbarmawi

Wir verwenden die Windows-Authentifizierung für fast alle unsere Intranet-Apps, einschließlich SharePoint. Mitarbeiter müssen sich anmelden, wenn ihr Browser ihre Windows-Anmeldeinformationen nicht automatisch an die Site sendet.

Im IE ist dies eine Frage der Browserkonfiguration. Ich denke, es gibt auch Möglichkeiten, Chrome und Firefox zum automatischen Senden der Windows-Anmeldung zu konfigurieren. Ich denke, Chrome) folgt den Windows-Interneteinstellungen (auf dem Client) genau so Versuchen Sie, die Benutzerauthentifizierungsoptionen auf "Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort" einzustellen.

Der folgende Screenshot zeigt, wo sich das befindet.

enter image description here

Beachten Sie außerdem, dass der Browser des Benutzers ein Windows-Token an die Anwendung sendet. Die Anwendung muss die Quelle dieses Tokens verstehen und ihr vertrauen, und dies würde mit der Unterstützung einer "Domäne" funktionieren, in der sich sowohl der Benutzer als auch die Anwendung befinden. Ich denke, sie wird auf einem einzelnen Computer funktionieren (während Sie debuggen). Wenn dies jedoch auf mehreren Computern in einem Netzwerk funktionieren soll, müssen Sie eine Domäne erstellen. Eine typische Methode zum Erstellen einer Domäne ist Active Directory.

Gib mir Bescheid.

9
Mzn

Beim Debuggen meiner Webanwendung in VS 2017 musste [Lösungspfad] \. Vs\config\applicationhost.config aktualisiert werden. Ich habe den Authentifizierungsabschnitt durch Folgendes ersetzt:

        <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> 

Mehr hier: https://stackoverflow.com/a/4813716/555142

4
dajo
  1. Öffnen Sie IIS (Windows + R 'inetmgr')
  2. Wählen Sie den IIS Server (Root Node)
  3. Doppelklick - 'Authentifizierung'
  4. Windows-Authentifizierung - Klicken Sie mit der rechten Maustaste und wählen Sie "Aktivieren".
  5. Formularauthentifizierung - Klicken Sie mit der rechten Maustaste und wählen Sie "Deaktivieren".
  6. Starten Sie den IIS Server neu
3
Mihir Kale