Misch-Formen und die Windows-Authentifizierung .Net 4.5
Dies möglich wurde, bis zu .Net4.0 und IIS 7.5.
Die Allgemeine Idee ist, dass Sie ermöglichen, anonym und forms-Authentifizierung für Ihre intranet-site und in einem Unterverzeichnis aktivieren Sie windows-Authentifizierung zusammen mit der forms-Authentifizierung und deaktivieren Sie anonymen. Durch das deaktivieren der Formen 401 => 302-Umleitung mit einige benutzerdefinierte code werden Sie in der Lage zu bekommen halten der Nutzer Benutzername und Domäne.
Wenn Sie google für eine Lösung, von der alle Straßen zu führen scheinen, um dieses blog/Lösung:
http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/
Jedoch beim Upgrade auf .net 4.5 und IIS8 es bricht Immer zwingen, einen 302-redirect auf die login-Seite und keine Mittel, um ein halten des usernamen.
Hat jemand das Problem gelöst noch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machte ich ein MVC-5-Lösung, die macht es Aussehen wie ein externer Anbieter, den vollständigen source-code hier:
https://github.com/MohammadYounes/MVC5-MixedAuth
Ich habe nicht die chance haben, testen Sie es auf IIS 8, versuchen Sie es und lassen Sie mich wissen.
Pro meine Prüfung dieses setup (.NET 4.5 /IIS 7.5 mit windows-Authentifizierung und Formularauthentifizierung aktiviert), die folgende Bedingung
(System.Web.HttpContext.Current.User.Identity is System.Security.Principal.WindowsIdentity)
ist
true
(nachdem der Benutzer erfolgreich authentifiziert sich via Windows-Authentifizierung), die theoretisch verwendet, um zu bestimmen, einen Weg, um dieses Problem. Hast du nicht nach jeder code, also kann ich nicht sicher sagen, wie würden Sie Ihr problem lösen. Erstellen Sie eine benutzerdefinierte Formularauthentifizierung ticket?Scheint es, dass Windows-Authentifizierung jetzt sticht die Formen der Authentifizierung, und
Request.IsAuthenticated == true
noch bevor der code erstellt der Forms-Authentifizierung ticket! Sehr ärgerlich, dies verursacht Probleme für einen meiner Kunden, wenn Sie beschlossen, zu installieren .NET 4.5, nach waren Sie arbeiten gut für mehrere Jahre durch das mischen sowohl auf Windows-forms-auth. Für jetzt (bis ein patch fertig ist, und der Kunde hat Zeit zum testen und bereitstellen) die Lösung war, entfernen .NET 4.5 und re-installieren von 4.0. Wenn Sie wirklich denken, Sie brauchen 4,5 für etwas, Sie verwenden eine diff-Maschine.Zum Beispiel, Sie können eine benutzerdefinierte Identität-Klasse mit Ihrer eigenen version von
bool IsAuthenticated
anstatt sich ausschließlich aufRequest.IsAuthenticated
(wieder, die Sie nicht post code, so kann ich nur annehmen, dass dies ist, was Sie tun). Dann ist die Lösung beinhaltet die Prüfung, ob der forms-Authentifizierung ticket vorhanden ist, in dem Fall, wo diese beiden Faktoren sindtrue
:System.Web.HttpContext.Current.Request.IsAuthenticated && (System.Web.HttpContext.Current.User.Identity is System.Security.Principal.WindowsIdentity)
Können Sie nicht mehr allein auf
Request.IsAuthenticated
, technisch gesehen, weil die Anforderung authentifiziert wurde, wenn der authentifizierte Benutzer über die Windows auth. (Während, bevor, beim mischen von windows auth und forms-auth,Request.IsAuthenticated
war nichttrue
bis das formularauthentifizierungsticket erstellt wurde.)Request.IsAuthenticated=true
nach windows-auth (und bevor forms-auth) konnte ich vermeiden, ein patch (änderung der gesamte code, der prüftRequest.IsAuthenticated
verwenden ein roll-meine-eigene-Eigenschaft statt.) Wären Sie bereit, veröffentlichen Sie Ihre web.config bitte? Ich sehe dasselbe Verhalten in server 2012/iis8 (Anforderung gilt als authentifiziert, nachdem windows auth Erfolg, aber bevor forms-auth, so dass 'windows' ist die primäre auth-Methode aus asp.net's Sicht statt der Formen.. aber kein Glück mit den config-Optionen noch). Danke für die info.