0

私は現在ASP.NET Core Identityを使用しています。私はセッションの長さを延長する設定を理解することができませんが、私はログアウトし続けている - 私は20分のスライディングの有効期限があると仮定しますが、私は設定を見つけることができません。注:外部OAuthとしてGoogleを使用しています。ASP.NET Core Identityの有効期限(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

可能な重複[Cookie認証が期限切れになっている](https://stackoverflow.com/questions/45595615/c) ookie-authentication-expiring-too-soon-in-asp-net-core) – SteelToe

+0

アプリケーションをどこにホスティングしていますか? IIS? Azure Appサービス?その後、データ保護を有効にする必要があります。そのため、Cookieの暗号化キーはアプリケーションの再起動後も存続します。 [my answer here](https://stackoverflow.com/a/47559544/455493)を参照してください。 – Tseng

答えて

0

この質問\答えは、あなたがあなたの設定のような何かをするだろう4.

アイデンティティ・サーバーに固有のものです:

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; 
}); 

とあなたの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

アプリケーションがリサイクルされ、暗号化キーが失われ、次回に新しい暗号化キーが生成されると、彼は役に立たなくなります – Tseng

+0

容赦なく答えた。しかし、MS IdentityとIdentityServer 4を使用して、AzureでホストされているGoogle OAuthを使用して、サーバーの再起動と現在のところ動作しているコードで自分の回答を更新します。 "Idenity"という名前は、コード内の2つの別々のパッケージの一部です。 – ttugates

+0

問題はIS4のトークンワークフローでは発生せず、OOB AccountControllerとCookieAuthenticationを介して発生します.IS4を無効にして、エラーがまだ存在するかどうかを確認します。 –

関連する問題