Caching der einmaligen Benutzeranmeldung mithilfe des verteilten CachesC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Caching der einmaligen Benutzeranmeldung mithilfe des verteilten Caches

Post by Anonymous »

Ich implementieren derzeit eine Blazor-Serveranwendung mit aktiviertem Azure B2C Single Sign-On. Die Anmeldefunktion funktioniert einwandfrei, außer dass der Benutzerstatus verloren geht, wenn die Anwendung neu gestartet wird. Ich suche nach einer Möglichkeit, diesen Zustand auch nach Neustarts der Anwendung beizubehalten. Einen Benutzer ständig aufzufordern, sich erneut anzumelden, ist nicht ideal.
Die Blazor-Dokumentation zur Statusverwaltung ist in dieser Hinsicht nicht besonders hilfreich, da sie nur vage Verweise auf Serverspeicher enthält, jedoch keine aussagekräftige Links zu Beispielen.
Basierend auf meinen Recherchen bin ich zu dem Schluss gekommen, dass ich den Benutzerstatus irgendwo außerhalb meiner Anwendung erfassen muss. Alle von mir durchgeführten Untersuchungen haben auf die Verwendung eines verteilten Token-Cache hingewiesen.
  • Link 1

    Link 2
  • Link 3
Was ich bisher gemacht habe
  • Die Option „Token-verteilter Cache“ wurde hinzugefügt, nachdem ich meine Azure B2C-Details in meiner Dienstregistrierung definiert habe

Code: Select all

.AddMicrosoftIdentityWebApp(options => configuration.Bind("AzureAdB2C", options))
.EnableTokenAcquisitionToCallDownstreamApi(
new List() {  })
.AddDistributedTokenCaches()
Ich verwende die SQL Server-Caching-Option (nur aus Gründen der Benutzerfreundlichkeit und lokaler Tests). Ich habe
  • einen MySQL-Server hochgefahren
  • Installierte Microsoft.Extensions.Caching.SqlServer gemäß den Dokumenten
  • Erstellte die relevante Tabellenstruktur dotnet sql-cache create „< ConnectionString>" dbo Session gemäß Dokumente. Ich habe bestätigt, dass die Tabellenstrukturen gemäß den Dokumenten erstellt werden.
  • Für die Registrierung wurde die Methode .AddSession() verwendet Relevante Dienste
  • Mein SQL-Server-Cache wurde wie folgt definiert

    Code: Select all

    .AddDistributedSqlServerCache(options =>
    {
    options.ConnectionString = ""
    options.SchemaName = "dbo";
    options.TableName = "Session";
    })
    
    Das stimmt perfekt mit dem überein, was ich im DB-Schema und in der Tabelle sehen kann.
  • Definierte app.UseSession (); direkt nach app.UseRouting() in meiner Program.cs
Was ich sehe
Es wird nichts geschrieben Tabelle zur Benutzeranmeldung – Ich sehe keine Protokolle in Blazor, was darauf hinweist, dass ein Dienst nicht registriert wurde oder die Verbindung zur Datenbank nicht hergestellt werden kann.
Fazit
Übersehe ich etwas Offensichtliches? Gibt es eine Möglichkeit, einen dauerhaften Status durch Anwendungsneustarts zu erreichen?
Ich habe auch die Microsoft-Identitätsbeispiele konsultiert und kein Beispiel gesehen, das diesen Ansatz verwendet.
Viele Vielen Dank für jede Hilfe!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post