2022年3月3日 星期四

[研究]ASP.NET Identity 身分驗證機制的帳號鎖定無效之研究

[研究]ASP.NET Identity 身分驗證機制的鎖定功能無效之解決

2022-03-03

Visual Studio 2022 + C# + ASP.NET + WebForm + Web Application

最近測試某系統,該系統使用ASP.NET Identity 身分驗證機制  (但非敝人建立)

App_Start 目錄下 IdentityConfig.cs 內容

//失敗 5 次,鎖定 5 分鐘
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;

登入也有修改

var result = signinManager.PasswordSignIn(Email.Text, Password.Text, 
    RememberMe.Checked, shouldLockout: false);

成為

var result = signinManager.PasswordSignIn(Email.Text, Password.Text, 
    RememberMe.Checked, shouldLockout: true);

重新參考下面這篇建立一個新的方案,並照上面修改

[研究] ASP.NET Identity 身分驗證授權機制 (VS2019)
https://shaurong.blogspot.com/2019/10/aspnet-identity-vs2019.html

測試鎖定功能則是正常的。開始查

查 UserLockoutEnabledByDefault 說明
https://docs.microsoft.com/zh-tw/previous-versions/dn613214(v=vs.108)
true if the user lockout is enabled when users are created; otherwise, false.

也就是當使用者被建立時,鎖定功能是否要啟用。那如果是使用者已經被建立後,此值才被設定為 true呢?(雖然此值預設 true,但該系統開發時,好像 ASP.NET Identity 尚未問世?)

對剛剛新建立的方案,用 SQL Server Management Studio檢視 [AspNetUsers] 資料表的 [LockoutEnabled], [AccessFailedCount], [UserName] 欄位,新增一個帳號,每登入失敗,就檢視一下欄位值;然後也拿有問題的系統測試一下,結果發現新建立的方案,其中 [LockoutEnabled] 欄位對於新增的使用者,其值為1,但該欄位 DB Schema沒有預設為1。

而異常的系統,新增的使用者,其 [LockoutEnabled] 欄位值是0;手動把所有人的  [LockoutEnabled] 都設定為1後,測試鎖定功能正常了。

(完)

相關

[研究]ASP.NET Identity 身分驗證機制的鎖定功能無效
http://shaurong.blogspot.com/2022/03/aspnet-identity.html

[研究][ASP.NET]錯誤 CS0115 'ApplicationSignInManager.CreateUserIdentityAsync(ApplicationUser)': 未找到任何合適的方法可覆寫
https://shaurong.blogspot.com/2021/07/aspnet-cs0115-applicationsigninmanagerc.html

[研究] ASP.NET Identity 身分驗證授權機制 (VS2019)
https://shaurong.blogspot.com/2019/10/aspnet-identity-vs2019.html

[研究] 替 AP.NET Identity v2.0 身分驗證增加密碼歷史紀錄功能 (失敗)
https://shaurong.blogspot.com/2017/04/apnet-identity-v20.html

[研究] 建立帶 AP.NET Identity v2.0 身分驗證的 WebForm 專案
https://shaurong.blogspot.com/2017/04/apnet-identity-v20-webform.html

[研究] ASP.NET Identity v2.2.1 相依套件與 packages.config 階層架構https://shaurong.blogspot.com/2017/04/aspnet-identity-v221-packagesconfig.html

[研究][C#][WebForm] 替方案安裝 ASP.NET Identity
https://www.blogger.com/blog/post/edit/3479310643037793626/3155383633956127054

[研究] ASP.NET Membership 與 ASP.NET Identity 驗證授權機制,AspNetUsers 與 aspnet_users
https://shaurong.blogspot.com/2016/05/aspnet-membership-aspnet-identity.html

ASP.NET Identity簡介
http://blogs.uuu.com.tw/Articles/post/2014/03/12/ASPNET-Identity%E7%B0%A1%E4%BB%8B.aspx

Adding ASP.NET Identity to an Empty or Existing Web Forms Project
http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

ASP.NET Identity
http://www.asp.net/identity


沒有留言:

張貼留言