webentwicklung-frage-antwort-db.com.de

Windows-Authentifizierung für ASP.NET MVC 4 - Funktionsweise und Test

Ich habe noch nie die Windows-Authentifizierung für ASP.NET MVC Webanwendungen verwendet, aber die Formularauthentifizierung. Vor kurzem hatte ich eine ASP.NET MVC 4-Webanwendung, für die eine Windows-Authentifizierungsimplementierung erforderlich ist, damit sich Benutzer auf dem Webserver meines Unternehmens anmelden können. Daher habe ich einige Fragen zur Windows-Authentifizierung. Ich benutze Visual Studio 2012.

  • Wie funktioniert die Windows-Authentifizierung?

  • Wie implementiere ich die Windows-Authentifizierung korrekt in der Datei "web.config"?

  • Wie teste ich, ob die Windows-Authentifizierung für meine ASP.NET MVC 4-Website wirklich funktioniert? Mit anderen Worten, wie teste ich es auf meinem lokalen Entwicklungs-PC mit local IIS (Version 8) und auf meinem firmeneigenen Webserver mit IIS Version 7?

39
Thomas.Benz

Ich fand ein hilfreiches Video heraus, das mir sehr nützlich war, indem ich Schritt für Schritt zeigte, wie die Windows-Authentifizierung für eine ASP.NET MVC-Website implementiert und getestet wird. Also schließe ich diese Frage.

Video von einem sehr netten Poster:

Implementieren der Windows-Authentifizierung in der Anwendung ASP.NET MVC 3 (Model View Controller)?

9
Thomas.Benz

Für IIS 8.5 und MVC 4:

Wie funktioniert die Windows-Authentifizierung?

In diesem Modus wird User.Identity (Wie in HttpContext.Current.User.Identity) Vom zugrunde liegenden Webserver ausgefüllt. Dies könnte IIS Express in dem Link von @R Kumar gezeigt werden, oder vollständig IIS wie in dem Video von @Thomas Benz.

Insbesondere ist User.Identity ein WindowsIdentity-Objekt. Z.B. Die folgende Besetzung wird funktionieren:

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;

Wie implementiere ich die Windows-Authentifizierung korrekt in der Datei web.config?

  <system.web>
    <authentication mode="Windows" />
  ...

Wie teste ich, ob die Windows-Authentifizierung für meine ASP.NET MVC 4-Website wirklich funktioniert? Mit anderen Worten, wie teste ich sie auf meinem lokalen Entwicklungs-PC mit lokalem IIS (Version 8).) und auf meinem firmeneigenen Webserver mit IIS Version 7?

Ändern Sie zunächst die ASP.NET-Berechtigung, um den aktuellen Benutzer auszuschließen. Z.B.

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

Aktivieren Sie zweitens die Windows-Authentifizierung für Ihre Site mit dem Manager IIS. Es ist unter der Funktion "Authentifizierung". Und deaktivieren Sie die anonyme Authentifizierung.

Beachten Sie, dass ältere Erklärungen vorschlagen, dass Sie Änderungen unter dem Element web.config Ihrer Site vornehmen. Neuere Implementierungen von IIS verhindern dies jedoch aus Sicherheitsgründen.

Drittens, richten Sie Ihren Browser auf die Webseite. Der Browser sollte Sie auffordern, Anmeldeinformationen anzugeben, da der aktuelle Benutzer keinen Zugriff auf die Website hat. Geben Sie die für die Site autorisierten an, und Ihr MVC-Code sollte ausgeführt werden.

Viertens überprüfen Sie die Benutzeridentität. Z.B.

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
33
Donal Lafferty

Ich habe dies mit ASP.NET MVC 1.0 durchgeführt. Das ist schon relativ lange her. Ich erinnere mich, dass die Einstellungen für IIS verwirrend waren. Ich habe nur einige Überprüfungen durchgeführt, und es sieht nicht so aus, als hätten sich die Dinge in Bezug auf die Attribute auf den Controllern stark auf ASP.NET MVC 4.0 geändert.

Für Ihre Fragen:

  1. Wie funktioniert es? Die folgenden Referenzen fassen die Dinge ziemlich gut zusammen. Authentifizieren von Benutzern mit Windows-Authentifizierung (C #) ist für ASP.NET MVC 4.0 NICHT genau richtig, hat jedoch Hintergrundinformationen.

    Erstellen einer Intranetsite mit ASP.NET MVC gilt für ASP.NET MVC 3.0.

    Ich bin zu neu, um mehr als zwei Links zu posten, daher müssen Sie MSDN nach "AuthorizeAttribute Class" für .NET Framework 4 durchsuchen.

  2. Welche Einstellungen für web.config? - Ich erinnere mich nur an ein Element, den "Authentifizierungsmodus".

  3. Beim Testen stimmten meine Windows-Betriebssystemversionen besser überein und mein Entwicklungscomputer befand sich auf derselben Windows-Domäne. Aber wenn ich mich richtig erinnere, hat das einfach funktioniert. YMMV , aber eine Sache, an die ich mich erinnere, war die Implementierung meiner eigenen Berechtigung. Vielleicht ist das eine Möglichkeit für Ihren Fall, Ihre eigenen zu erstellen und dann in der Produktion zur Windows-Authentifizierung zu wechseln. Ich würde jedoch ein paar Testiterationen mit einem Testserver vorschlagen, wenn Sie eine auf der Unternehmensdomäne einrichten können.

10
BillH