Wie zeige ich bei jedem Besuch einer Razor-Seite in einer ASP.NET Core-Anwendung eine Windows-Anmeldeaufforderung an?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie zeige ich bei jedem Besuch einer Razor-Seite in einer ASP.NET Core-Anwendung eine Windows-Anmeldeaufforderung an?

Post by Guest »

Ich versuche, dass der Browser den Benutzer bei jedem Besuch einer von mir eingerichteten Seite zur Eingabe seiner Windows-Anmeldeinformationen auffordert. Der Grund dafür ist, dass unser Kunde möchte, dass der Benutzer nach jeder erfolgreichen Abmeldung seine Anmeldeinformationen eingeben muss.
Die Benutzer greifen über ihr eigenes internes Netzwerk auf die Website und die Anwendung zu wird die Windows-Authentifizierung verwenden.
Ich habe die App so konfiguriert, dass sie IIS im Startup bedient:

Code: Select all

if (useWindowsAuth)
{
    services.Configure(iis =>
    {
        iis.AuthenticationDisplayName = "Windows";
        iis.AutomaticAuthentication = false;
});
}
Das Anmeldeseitenmodell ist mit einem Authorize-Attribut versehen:

Code: Select all

[Authorize(AuthenticationSchemes = IISDefaults.AuthenticationScheme)]
public class WindowsModel : PageModel
In IIS sind sowohl die anonyme Authentifizierung als auch die Windows-Authentifizierung aktiviert.
Wenn die Seite geladen wird, erhalte ich korrekterweise die Aufforderung, die Anmeldeinformationen des Benutzers einzugeben.
Wenn der Benutzer zum Abmelden klickt, stelle ich eine Schaltfläche bereit, über die er zum Anmelden zurückkehren kann. Zu diesem Zeitpunkt sollten die Anmeldeinformationen erneut angezeigt werden.
Nach der Anmeldung und dem erneuten Aufrufen der Anmeldeseite wird die Eingabeaufforderung jedoch übersprungen.
Wenn Wenn ich den Browser-Cache, die Cookies und den Verlauf lösche und dann die Seite neu lade, erhalte ich erneut die Eingabeaufforderung. Es scheint also, dass der Browser die Authentifizierung beibehält.
Wie gehe ich vor, um die Authentifizierung des Benutzers programmgesteuert aufzuheben ODER wie lösche ich den Cache, die Cookies usw. programmgesteuert aus dem Browser? Damit die Eingabeaufforderung jedes Mal angezeigt wird, wenn der Benutzer die Anmeldeseite besucht?
Oder gibt es eine bessere Möglichkeit, diese Eingabeaufforderung jedes Mal anzuzeigen, wenn die Seite geladen wird?
Vielen Dank im Voraus!
Dinge, die ich versucht habe:
Ich habe versucht, eine Unauthorized()-Antwort von der OnGet-Methode der Seite zu senden, die beim ersten Besuch funktioniert, aber bei jedem weiteren Besuch der Seite Die Eingabeaufforderung wird übersprungen.
Update:
Der Abmeldeworkflow ist an unseren Identitätsanbieter (Identity Server) gebunden, der den folgenden Code ausführt, um alle zu bereinigen lokale Cookies und leitet den Benutzer dann zurück zu Kunde:

Code: Select all

var context = await _interaction.GetLogoutContextAsync(logoutId);

if (User?.Identity.IsAuthenticated == true)
{
// delete local authentication cookie
await _signInManager.SignOutAsync();

}

if (context != null && !string.IsNullOrEmpty(context.PostLogoutRedirectUri))
{
return Redirect(context.PostLogoutRedirectUri);
}

return Page();

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post