wake-up-neo.com

Anmeldeaufforderung mit integrierter Windows-Authentifizierung empfangen

Ich habe eine .NET 3.5-Anwendung, die unter IIS 7 auf einem Windows 2003-Server ausgeführt wird, und kann die integrierte Windows-Authentifizierung nicht ordnungsgemäß ausführen, wenn ich weiterhin nach einem Login gefragt werde. Ich habe die Windows-Authentifizierung in IIS aktiviert, wobei alle anderen Sicherheitstypen deaktiviert sind. Die Authentifizierung/Autorisierung meiner Anwendung web.config-Datei ist wie folgt eingerichtet:

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
    <authenticationmode="Windows"/>
    <authorization>
    <deny users = "?" />
    </authorization>
</system.web>

Mit diesem Setup erwarte ich, dass der Windows-Benutzer hinter den Kulissen überprüft, um den Zugriff zuzulassen und anonyme Benutzer zu verweigern. Was ich jedoch bekomme, ist ein Windows-Login-Popup, wenn ich versuche, auf die Site zuzugreifen.

Ich habe dieses Problem seit einigen Tagen behoben und kann das Problem nicht herausfinden. Aufgrund von Beiträgen mit ähnlichen Problemen habe ich bestätigt, dass meine URL keine Punkte enthält. Ich habe noch einmal überprüft, ob meine IE -Einstellungen auf Integrierte Windows-Authentifizierung aktivieren eingestellt sind. Außerdem wurde meine URL zu meinen Intranetseiten hinzugefügt, der Popup wird jedoch weiterhin angezeigt -oben.

Zur weiteren Fehlerbehebung habe ich die anonyme Authentifizierung in IIS aktiviert und meine web.config -Datei so geändert, dass ich sie direkt eingeben kann, und dann Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name) hinzugefügt .toString ()), um zu sehen, welcher Benutzer bei der Authentifizierung verwendet wird. Das Ergebnis ist IIS APPPOOL\myapp. Dies ist offensichtlich der IIS - Anwendungspool für meine Anwendung.

Ich freue mich über jede Hilfe, die jeder leisten kann, so dass ich immer noch nur die Windows-Authentifizierung verwende, aber das Popup nicht bekomme und die Windows-Authentifizierung mit dem tatsächlichen Windows-Benutzer durchgeführt wird.

Vielen Dank.


Zusätzlicher Hinweis zur Fehlerbehebung weiter:

Ich habe gerade bemerkt, dass, wenn die Anmeldung fehlschlägt und die Windows-Anmeldeaufforderung erneut angezeigt wird, der Benutzername, der versucht hat, sich als "SERVERNAME"\"USERNAME" anzumelden, angezeigt wurde. Dies hat mich zu der Annahme geführt, dass der Benutzer versucht, den Server gegen den Server zu überprüfen Domain. Um dies zu bestätigen, habe ich direkt auf dem App-Server ein lokales Benutzerkonto mit demselben Benutzernamen und Kennwort wie der Netzwerkdomänenbenutzer erstellt und versucht, mich erneut anzumelden. Das Ergebnis war, dass ich die Anmeldeaufforderung erneut erhalten habe. Als ich jedoch dieses Mal Benutzername und Kennwort eingegeben hatte, konnte ich mich erfolgreich anmelden. Der Netzwerkbenutzer und der App-Server befinden sich in derselben Domäne. Sie sind sich also nicht sicher, warum die Authentifizierung IIS auf die lokalen App-Server-Konten und nicht auf die Domänen-Konten verweist. Ich stelle fest, dass dies eine IIS -Frage an diesem Punkt ist, also auch auf forums.iis.net posten, aber ich freue mich über jeden Rat, den jemand seit Tagen gefunden hat.

97
Casey

Ich habe einen Windows 2008-Server, an dem ich gerade arbeite. Daher ist meine Antwort nicht ganz dieselbe wie bei einem OP auf einem Windows 2003-Server.

Hier ist das, was ich gemacht habe (hier aufnehmen, damit ich es später finden kann).

Ich hatte das gleiche Problem:

login Prompt

In meiner Web.config -Datei hatte ich diesen Abschnitt:

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <allow users="*" />
        <deny users="?" />
    </authorization>
</system.web>

Unter IIS scheinen alle diese Probleme unter dem Symbol Authentication gelöst zu werden.

  1. Bearbeitungsberechtigungen: Stellen Sie sicher, dass Ihr ASP.NET-Konto über eine Berechtigung verfügt. Meine wurde ursprünglich nicht hinzugefügt.

ASP.NET permission

Gehen Sie nun zu den Funktionen von Authentication :

Authentication Features

Aktivieren Sie anonyme Authentifizierung mit der IUSR:

Anonymous Authentication

Aktivieren Sie Windows-Authentifizierung , und klicken Sie dann mit der rechten Maustaste, um die Anbieter festzulegen.

NTLM muss ZUERST sein!

Windows Authentication

Überprüfen Sie als Nächstes unter Erweiterte Einstellungen ... der Erweiterte Schutz ist Akzeptieren und Aktivieren Sie die Kernelmodus-Authentifizierung .

Advanced Settings

Nachdem ich dies getan hatte, ging ich zurück zu meiner Webanwendung, klickte auf den Link Durchsuchen und loggte mich ein, ohne meine Anmeldeinformationen erneut eingeben zu müssen.

Ich hoffe, dass sich dies für viele von Ihnen als vorteilhaft erweist, und ich hoffe, dass es später auch für mich nützlich ist.

80
jp2code

Nur zum Wohl anderer. Wenn der Fehler ein 401.1 Unauthorized ist und Ihr Fehlercode mit 0xc000006d übereinstimmt, dann treffen Sie tatsächlich auf eine Sicherheitsfunktion, die Anforderungen an den FQDN oder an benutzerdefinierte Host-Header blockiert, die nicht mit dem Namen Ihres lokalen Computers übereinstimmen:

Folgen Sie diesem Support-Artikel, um das Problem zu beheben:

http://support.Microsoft.com/kb/896861

Dies dauerte eine Weile, da mir die Kommentare aller anderen hier nicht geholfen haben. Ich habe diesen Artikel gefunden und ihn behoben!

34
kamranicus

Ich hatte ein ähnliches Problem, bei dem ich nur einen bestimmten Teil meiner Website schützen wollte. Alles hat gut funktioniert, außer im IE. Ich habe sowohl die anonyme als auch die Windows-Authentifizierung aktiviert .. Für Anonymous ist die Identität auf die Anwendungspoolidentität eingestellt. Das Problem lag bei der Windows-Authentifizierung. Nach einigem Graben habe ich den Fiddler angefeuert und festgestellt, dass Kerberos als Provider verwendet wurde. Ich habe es auf NTLM umgestellt und das wurde behoben . HTH

Daudi

26
Daudi

Fügen Sie der Websicherheit die Berechtigung [Domänenbenutzer] hinzu.

  • Klicken Sie mit der rechten Maustaste auf Ihre Site in IIS im Ordner Sites
  • Klicken Sie auf Berechtigungen bearbeiten ...
  • Wählen Sie die Registerkarte Sicherheit
  • Klicken Sie im Bereich Gruppe oder Benutzernamen auf die Schaltfläche Bearbeiten
  • Klicken Sie im Popup Permissions unter den Gruppen- oder Benutzernamen auf Hinzufügen ...
  • Geben Sie [Domain Users] in den Objektnamen ein, um den Textbereich auszuwählen, und klicken Sie auf OK, um die Änderung zu übernehmen
  • Klicken Sie auf OK, um das Popup Permissions zu schließen
  • Klicken Sie auf OK, um das Eigenschaften-Popup zu schließen und Ihre neuen Einstellungen zu übernehmen
14
Harry

Erstellen Sie keine Fehler auf Ihrem Server, indem Sie alles ändern. Wenn Sie über Windows-Anmeldeaufforderung bei Verwendung der Windows-Authentifizierung unter 2008 R2 verfügen, wechseln Sie einfach zu Providers und bewegen Sie die UP-Variable NTLM für jede Ihrer Anwendungen. Wenn Negotiate an erster Stelle der Liste steht, kann die Windows-Authentifizierung die Arbeitseigenschaft für eine bestimmte Anwendung beenden In 2008 R2 können Sie aufgefordert werden, Benutzernamen und Kennwort einzugeben, als nie funktioniert. Dies passiert manchmal, wenn Sie Ihre Anwendung aktualisieren. Seien Sie einfach sicher, dass NTLM an erster Stelle steht und Sie werden dieses Problem nie wieder sehen.

12
Slo

Das hat es für mich behoben.

Mein Server- und Client-PC ist Windows 7 und befindet sich in derselben Domäne

  1. aktivieren Sie in iis7.5 die Windows-Authentifizierung für Ihr Intranet (deaktivieren Sie die gesamte andere Authentifizierung.). Windows-Authentifizierung muss in der Datei web.config nicht erwähnt werden

  2. gehen Sie dann auf den Client-PC. IE8 oder 9- Tools-Internet-Optionen-Sicherheit-Lokales Intranet-Sites-Erweitert-Fügen Sie Ihre Site hinzu (nehmen Sie das "Erforderliche Server verfi ...") ticketmark..no brauchen

  3. IE8 oder 9 - Extras - Internetoptionen - Sicherheit - Lokales Intranet - Benutzerdefinierte Ebene - Benutzerauthentifizierung - Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort

  4. speichern Sie diese Einstellungen .. Sie sind fertig .. Keine weiteren Aufforderungen zur Eingabe von Benutzername und Kennwort.

  5. Stellen Sie sicher, dass Ihr Client-PC Teil der Domäne ist, und Sie müssen für diese Einstellungen ein GPO haben. Andernfalls wird diese Einstellung wiederhergestellt, wenn sich der Benutzer das nächste Mal bei Windows anmeldet

5
Jose Arun

Wenn Ihre URL Punkte im Domänennamen enthält, behandelt IE sie als Internetadresse und nicht als lokale Adresse. Sie haben mindestens zwei Möglichkeiten:

  1. Rufen Sie einen Alias ​​auf, der in der URL verwendet werden soll, um server.domain zu ersetzen. Zum Beispiel myapp.
  2. Führen Sie die folgenden Schritte auf Ihrem Computer aus.

Gehen Sie zur Website und brechen Sie den Anmeldedialog ab. Lass das geschehen:

 enter image description here

In den Einstellungen des IE:

 enter image description here

 enter image description here

 enter image description here

5
Bob Horn

Kann auf den Browser bezogen sein. Wenn Sie den IE verwenden, können Sie zu den erweiterten Einstellungen wechseln und das Kontrollkästchen "Integrierte Windows-Authentifizierung aktivieren" aktivieren.

4
Dante

WindowsIdentity.GetCurrent ist korrekt: Sie sollten den APPPOOL-Benutzer erhalten. Dies liegt daran, dass der ASP.NET-Prozess, der Ihren Code ausführt, die aktuelle Identität ist. Wenn Sie möchten, dass der Benutzer die Identität der Site angibt, müssen Sie die folgende Zeile in Ihre web.config einfügen:

<identity impersonate="true" />

Dadurch nimmt der Prozess die Identität des Benutzers an, der die Seite anfordert. Alle Aktionen werden in ihrem Namen ausgeführt. Wenn Sie also versuchen, Ordner im Netzwerk zu lesen oder auf Datenbankressourcen und ähnliches zuzugreifen, bedeutet dies, dass der aktuelle Benutzer Berechtigungen für diese Dinge benötigt. Weitere Informationen zum Identitätswechsel finden Sie hier . Beachten Sie, dass abhängig von der Einrichtung Ihrer Web-/Datenbankservertopologie möglicherweise Delegierungsprobleme bei aktiviertem Identitätswechsel auftreten.

Ihr ursprüngliches Problem ist jedoch, dass die Identität nicht ermittelt werden kann und Sie ein Anmeldungs-Popup sehen. Ich beachte, dass Sie den <deny>-Block nicht benötigen, wenn Sie die anonyme Authentifizierung in IIS deaktiviert haben. Wir schließen es niemals ein (außer in speziellen <location>-Blöcken und so). Ich würde also sagen, Sie könnten versuchen, es zu entfernen und es erneut zu versuchen. Alles andere hört sich jedoch richtig an.

Sie haben nicht angegeben, welcher Benutzer den Anwendungspool in IIS ausführt. Ist es ein benutzerdefiniertes Konto oder ist es das Standardkonto? Handelt es sich bei einem benutzerdefinierten Konto um ein Domänenkonto oder ein lokales Konto auf dem Webserver? Benutzerdefinierte Konten können manchmal einige weitere Schritte erfordern, z. B. die Registrierung eines SPN. Es kann auch ein Problem sein, wenn das benutzerdefinierte Konto keine Berechtigung zum Auflösen des Kontos für eingehende Benutzer in AD hat.

Sie können auch die Protokolle IIS überprüfen, um zu sehen, welche Antwort zurückgegeben wird. Es wird höchstwahrscheinlich eine 401 sein, aber danach sollte eine Subnummer wie 401.2 oder etwas anderes stehen. Diese Subnummer kann manchmal dazu beitragen, das Grundproblem zu ermitteln. Dieser KB-Artikel listet fünf auf.

3
Sean Hanley

In unserem Intranet wurde das Problem auf der Clientseite gelöst, indem die Sicherheitseinstellungen wie hier gezeigt angepasst wurden. Jedes der Kontrollkästchen auf der rechten Seite hat für uns funktioniert.

 IE Internet Options

3
mosheb

In meinem Fall wurden die Berechtigungseinstellungen nicht richtig eingerichtet.

Ich musste 

  1. öffne das .NET-Autorisierungsregeln in IIS Manager 

    open the .NET Authorization Rules in IIS Manager
  2. und löschen das Regel verweigern

    remove the Deny Rule
3
johnecon

Ich hatte auch das gleiche Problem. Habe die meisten Sachen aus diesem und anderen Foren ausprobiert.

Endlich war es nach einem kleinen eigenen RnD erfolgreich.

Ich ging in IIS Settings und dann in meine Website permission options zu meiner Organisationsdomänenbenutzergruppe.

Da nun allen meinen Domain-Benutzern der Zugriff auf diese Website gewährt wurde, ist dieses Problem nicht aufgetreten.

Hoffe das hilft

2
Saurabh

Ich habe gerade ein ähnliches Problem mit einer ASP.Net-Anwendung gelöst.

Symptome: Ich konnte mich mit einem lokalen Benutzer, aber nicht mit einem Domänenbenutzer bei meiner App anmelden, auch wenn der Computer der Domäne ordnungsgemäß beigetreten war (wie in Ihrer Zusätzlichen Anmerkung angegeben). Im Security Event Viewer gab es ein Ereignis mit der ID = 4625 "Domänenseiteninkonsistent".

Lösung: Ich habe die Lösung hier gefunden. Das Problem war, dass auf meinen Testmaschinen virtuelle Maschinen geklont wurden (Windows Server 2008 R2; ein Domänencontroller und ein Webserver). Beide hatten dieselbe Maschinen-SID, was anscheinend zu Problemen führte. Folgendes habe ich getan:

  1. Entfernen Sie den Webserver aus der Domäne.
  2. Führen Sie c:\Windows\System32\Sysprep\Sysprep.exe in der VM aus.
  3. Starten Sie die VM neu.
  4. Verbinden Sie den Webserver mit der Domäne.

Sie verlieren dabei einige Einstellungen (Benutzereinstellungen, statische IP-Adresse, erstellen Sie das selbstsignierte Zertifikat neu), aber jetzt, da ich sie neu erstellt habe, funktioniert alles korrekt.

2
Matthieu

Ich habe den obigen IIS - Konfigurations-Tricks und Loopback-Registrierungs-Hack ausprobiert, die Berechtigungen für den Anwendungspool und ein Dutzend anderer Dinge überprüft und erneut erstellt und konnte die auf meiner Entwicklungsarbeitsstation ausgeführte Authentifizierungsschleife mit IIS Express oder IIS 7.5 aus einer lokalen oder Remote-Browsersitzung. Ich erhielt vier 401.2 Statusantworten und eine leere Seite. Dieselbe Site, die auf meinem Staging-Server IIS 8.5 bereitgestellt wird, funktioniert einwandfrei.

Schließlich bemerkte ich, dass der Antworttext im Antworttext leer war und der Browser die Standardseite für eine erfolgreiche Anmeldung enthielt. Ich stellte fest, dass die benutzerdefinierte Fehlerbehandlung für ASP.NET und HTTP für den 401-Fehler die Windows-Authentifizierung meiner Arbeitsstation verhinderte/beeinträchtigte aber nicht der Staging-Server. Ich habe einige Stunden damit herumgepfuscht, aber sobald ich die benutzerdefinierte Behandlung nur für den 401-Fehler entfernt hatte, war die Workstation wieder normal. Ich präsentiere dies als eine weitere Möglichkeit, mit dem eigenen Fuß zu schießen.

1
Mike M

Haben Sie versucht, sich mit Ihrem Domain-Präfix anzumelden, z. Domain\Benutzername? IIS 6 verwendet standardmäßig den Host-Computer als Standarddomäne. Durch die Angabe der Domäne bei der Anmeldung kann das Problem möglicherweise behoben werden.

1
chalemic

In meinem Fall war die Lösung (zusätzlich zu den oben vorgeschlagenen Anpassungen) der Neustart mein/Benutzer lokaler Entwicklungscomputer/IIS (Hosting-Server) . Mein Benutzer wurde gerade zum neuen hinzugefügt AD-Sicherheitsgruppe erstellt - und die Richtlinie wurde erst nach Abmeldung/Neustart des Computers auf das Benutzer-AD-Konto angewendet.

Hoffe das hilft jemandem.

0
ukie

Die Windows-Authentifizierung in IIS 7.0 oder IIS 7.5 funktioniert nicht mit Kerberos (provider = Negotiate) Wenn die Anwendungspoolidentität ApplicationPoolIdentityOne ist, muss der Netzwerkdienst oder ein anderes integriertes Konto . Verwendet werden Möglichkeit ist, NTLM zu verwenden, um Windows Authenticatio zum Laufen zu bringen (in Windows-Authentifizierung, Anbieter, NTLM an die Spitze setzen oder verhandeln)

chris van de vijver

0

Ich habe das gleiche Problem mit der Aufforderung zur Eingabe von Anmeldeinformationen gefunden und eine schnelle Suche durchgeführt, und nichts im Internet würde das Problem beheben. Es dauerte einige Zeit, das Problem zu finden, ein dummes.

In IIS -> Voreinstellung -> Berechtigungsnachweis für physischen Pfad (ist leer)

Sobald ich eine Rechner-ID (Domäne/Benutzer) hinzugefügt habe, die Zugriff auf die VM/den Server hat, wird die Kennwortabfrage gestoppt. 

Hoffe das hilft 

0
kao

Ich hatte dieses Problem auf .net Core 2 und nachdem ich die meisten Vorschläge durchgegangen bin, scheint es, als hätten wir eine Einstellung in web.config verpasst

<aspNetCore processPath="dotnet" arguments=".\app.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Die korrekte Einstellung war forwardWindowsAuthToken = "true", was jetzt offensichtlich ist, aber wenn es so viele Situationen für dasselbe Problem gibt, ist es schwieriger, es genau zu bestimmen

Edit: Ich fand auch den folgenden Msdn Artikel hilfreich, der die Problembehandlung durchläuft.

0
eugen

Ich hatte das gleiche Problem, da der Benutzer (Identität), den ich im Anwendungspool verwendete, nicht zur Gruppe IIS_IUSRS gehörte. Der Benutzer wurde der Gruppe hinzugefügt und alles funktioniert 

0
user3731689