簡體   English   中英

.NET Core 2.0中的持久性Auth cookie

[英]Persistent Auth cookie in .net core 2.0

最近,我在.net core 2.0中創建了我的新網站,並且在身份驗證中使用了永久性cookie。 我還在使用持久性文化cookie作為語言。

我的網站托管在azure共享池中,我沒有指定任何機器密鑰

問題。 幾個小時不活動(新瀏覽器)后,我重新打開網站時,我丟失了我的身份驗證Cookie,我需要重新登錄,但區域性Cookie在上一個會話中仍然有效。

我還設置了Application Insights可用性以使我的應用程序熱身(每10分鍾從2個不同的位置ping網站)。

LoginController

if (this.accountService.ValidateOTP(phoneNumber, otp))
        {
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.MobilePhone, phoneNumber),
                new Claim(ClaimTypes.Name, phoneNumber)
            };
            var userIdentity = new ClaimsIdentity("Custom");
            userIdentity.AddClaims(claims);
            ClaimsPrincipal userPrincipal = new ClaimsPrincipal(userIdentity);

            //await HttpContext.SignOutAsync("AnimalHubInstance");
            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                userPrincipal,
                new AuthenticationProperties
                {
                    IsPersistent = true,
                    ExpiresUtc = DateTime.Now.AddYears(1),
                });
}

啟動

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(option =>
            {
                option.LoginPath = new PathString("/Account/Unauthorized");
                option.LogoutPath = new PathString("/Account/Logout");
                option.Cookie.Name = ".myAuth";
                option.ExpireTimeSpan = TimeSpan.FromDays(365);
                option.Cookie.Expiration = TimeSpan.FromDays(365);
            });

在此處輸入圖片說明

您需要使用數據保護來保留會話加密密鑰。

一般在Azure App Service或IIS(在VM或本地)中托管應用程序時,IIS會在不活動時回收應用程序和應用程序池。 因此,如果您的應用在特定時間內沒有被點擊,它將被關閉並在下次連接時重新啟動。

發生這種情況時,將為會話生成新的加密密鑰,而您之前的會話將無效。

幾個小時不活動(新瀏覽器)后,我重新打開網站時,我丟失了我的身份驗證Cookie,我需要重新登錄,但區域性Cookie在上一個會話中仍然有效。

您的文化Cookie的價值只是使用Urlencoded。 正如曾先生所說,用於散列和加密的機器密鑰可能會在某些時候自動重新生成。 我認為此問題是由您選擇的定價層引起的。 對於免費共享層,您的應用程序將在共享基礎結構上運行,並且您只有有限的資源(例如CPU時間,RAM,磁盤空間),而沒有SLA

應用服務限制

在此處輸入圖片說明

此外,我嘗試重新啟動網站並在本地回收應用程序池,身份驗證cookie仍可以按預期工作。 對於基本定價層下的Web應用托管,到目前為止,我沒有遇到此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM