Hybrid aus Windows-Authentifizierung und Formularauthentifizierung in ASP.NET MVC 4

Wir haben eine ASP.NET MVC 4-Intranetanwendung. Wir verwenden die Windows-Authentifizierung und dieser Aspekt funktioniert einwandfrei. Die Anmeldeinformationen des Benutzers werden verwendet, und wir können über die Web-App auf diese Anmeldeinformationen zugreifen.

Was wir wirklich wollen, ist jedoch eine Art Hybridmodus. Wir möchten die Anmeldeinformationen des Benutzers vom Browser abrufen, aber wir möchten auch sicherstellen, dass sich der Benutzer in der Datenbank unserer Anwendung befindet. Befindet sich der Benutzer in der Datenbank, kann er einfach fortfahren. Wenn dies nicht der Fall ist, möchten wir sie auf eine Seite umleiten, auf der Sie nach alternativen Anmeldeinformationen gefragt werden. Was ich jetzt mache, istGlobal.asax.csIch habe eineApplication_AuthenticateRequest Ich überprüfe, ob der Benutzer authentifiziert ist. Wenn dies der Fall ist und ihre Cookie-Informationen nicht die Tatsache widerspiegeln, dass sie im System angemeldet sind, melde ich sie an und richte einige Cookies mit Informationen über den Benutzer ein. Wenn sie nicht authentifiziert sind, leite ich sie auf eine Anmeldeseite um. Wir können AD-Rollen aus Gründen, die mit Unternehmensrichtlinien zusammenhängen, nicht verwenden. Daher müssen wir die Datenbank für zusätzliche Authentifizierung verwenden.

Ich vermuteApplication_AuthenticateRequest ist nicht der richtige Ort dafür, aber vielleicht ist es das auch. Grundsätzlich benötigen wir jedoch einen Ort, an dem die Authentifizierungsanforderungen gefiltert werden können. Zusätzlich führt mich diese Implementierung zu einem anderen Problem:

Wir haben bestimmte URLs in unserer App, die anonymen Zugriff ermöglichen. Ich habe hinzugefügt<location> Tags zu der web.config für diese. Das Problem ist, wenn anonyme Anrufe in diese getätigt werden, wird es zuApplication_AuthenticateRequest und versucht, den Benutzer in die DB einzuloggen. Jetzt kann ich Code hinzufügenApplication_AuthenticateRequest um diese URLs zu verarbeiten und das ist derzeit mein Plan, aber wenn ich schreibe undApplication_AuthenticateRequest Ist dies nicht der richtige Ort, dann würde ich es lieber jetzt als später herausfinden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage