0

Ich verwende derzeit ASP.NET Core Identity. Ich kann die Einstellung nicht herausfinden, um die Sitzungslänge zu verlängern, aber ich werde immer ausgeloggt - ich nehme an, es gibt einen gleitenden Ablauf von ~ 20 Minuten, aber ich kann die Einstellung nicht finden. Hinweis: Ich verwende Google als externes OAuth.ASP.NET Core Identity Ablauf (Google OAuth)

 services.AddIdentity<ApplicationUser, IdentityRole>(o => 
      { 
       o.Password.RequireDigit = false; 
       o.Password.RequireLowercase = false; 
       o.Password.RequireUppercase = false; 
       o.Password.RequireNonAlphanumeric = false; 
       o.Password.RequiredLength = 6; 
       o.SecurityStampValidationInterval = TimeSpan.FromHours(8); 
       o.Cookies.ExternalCookie.ExpireTimeSpan = TimeSpan.FromHours(8); 
       o.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(8); 
      }) 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 


     app.UseIdentityServer(); 

     app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
     { 
      Authority = $"http://localhost:55504/", 
      RequireHttpsMetadata = false, 
      AllowedScopes = 
      { 
       IdentityServerConstants.StandardScopes.OpenId, 
       IdentityServerConstants.StandardScopes.Profile, 
       IdentityServerConstants.StandardScopes.Email, 
       "name", 
       "given_name", 
       "family_name", 
       "role" 
      } 
     }); 

     var googleOptions = serviceProvider.GetRequiredService<GoogleOptions>(); 
     app.UseGoogleAuthentication(new GoogleOptions 
     { 
      AuthenticationScheme = "Google", 
      SignInScheme = "Identity.External", 
      ClientId = googleOptions.ClientId, 
      ClientSecret = googleOptions.ClientSecret 
     }); 
+0

Mögliche doppelte von [Cookie-Authentifizierung, die zu früh in ASP.NET Core abläuft] (https://stackoverflow.com/questions/45595615/c ookie-authentication-ablauf-zu-bald-in-asp-net-core) – SteelToe

+0

Wo und wie hosten Sie Ihre Anwendung? IIS? Azure-App-Dienst? Dann müssen Sie den Datenschutz aktivieren, damit Ihr Verschlüsselungsschlüssel für die Cookies den Neustart der Anwendung übersteht. Siehe [meine Antwort hier] (https://stackoverflow.com/a/47559544/455493) – Tseng

Antwort

0

Diese Frage \ Antwort ist spezifisch für Identity Server 4.

Sie würden etwas tun, wie in Ihrem konfigurieren:

app.UseGoogleAuthentication(new GoogleOptions 
{ 
    SignInScheme = "Identity.External", // this is the name of the cookie middleware registered by UseIdentity() 
    ClientId = Configuration["ExternalAuthentication:Google:ClientId"], 
    ClientSecret = Configuration["ExternalAuthentication:Google:ClientSecret"] 
}); 

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
{ 
    Authority = $"http://localhost:55504/", 
    RequireHttpsMetadata = false, 
    AllowedScopes = 
    { 
     IdentityServerConstants.StandardScopes.OpenId, 
     IdentityServerConstants.StandardScopes.Profile, 
     IdentityServerConstants.StandardScopes.Email, 
     "name", 
     "given_name", 
     "family_name", 
     "role" 
    } 
     // CookieLifetime default is 10 Hours 
     Authentication.CookieLifetime = TimeSpan.FromHours(24); 

     // Default CookieSlidingExpiration = false; 
     Authentication.CookieSlidingExpiration = true; 
}); 

und in Ihrem ConfigureServices

// Identity 
    // https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity 
    // http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html 
    services.AddIdentity<ApplicationUser, IdentityRole>(o => { 
      // configure identity options 
      o.Password.RequireDigit = false; 
      o.Password.RequireLowercase = false; 
      o.Password.RequireUppercase = false; 
      o.Password.RequireNonAlphanumeric = false; 
      o.Password.RequiredLength = 6; 
     }) 
      .AddEntityFrameworkStores<AuthDbContext>() 
      .AddDefaultTokenProviders(); 
+0

Das wird ihm nicht helfen, wenn die Anwendung recycelt und der Verschlüsselungsschlüssel verloren geht und beim nächsten Start ein neuer Verschlüsselungsschlüssel generiert wird – Tseng

+0

I gab eine Antwort aus dem Stegreif zugegebenermaßen zu. Aber ich werde meine Antwort mit Code aktualisieren, der momentan zwischen Neustarts des Servers mit Google OAuth, gehostet auf Azure, unter Verwendung von MS Identity und IdentityServer 4 funktioniert. Der Name "Idenity" ist Teil von 2 separaten Paketen in seinem Code. – ttugates

+0

Das Problem tritt nicht über einen Token-Workflow von IS4 auf, sondern über OOB AccountController und CookieAuthentication. Ich werde versuchen, IS4 zu deaktivieren und festzustellen, ob der Fehler weiterhin besteht. –

Verwandte Themen