簡體   English   中英

是否需要在.NET Core 2.0和EF下使用IdentityDbContext進行JWT身份驗證?

[英]Is it required to use IdentityDbContext for JWT authentication under .NET Core 2.0 and EF?

我正在玩.NET Core下的登錄程序,我注意到當我按照指南並使用IdentityDbContextIdentityUser我在數據庫中自動獲得了一堆表(例如AspNetUsersAspNetUserClaims等)。

雖然它很好,但我想知道使用不那么神奇的DbContext並為用戶和角色管理創建自己的架構是非常錯誤的。 我更喜歡“殺死自己的食物”,以便了解安全性如何工作,我不喜歡使用我不理解的螺栓和螺母的工具和框架。 (“它就像那樣工作”,當它停止工作時經常導致問題。)

IdentityDbContextIdentityUser等中的Identity部分是一個方便的東西還是那些應該被使用的東西?

我將定位的技術堆棧是.NET Core 2.0和JWT身份驗證。 當然,該模型應該由EF在DB中管理。

如果問題是愚蠢的,請原諒。 我是安全人員的新手,可能正在咆哮錯誤的樹。

不需要使用這些類。 它們是經過測試的便捷實現,適合大多數常見用例,但您可以替換或自定義Identity堆棧的各個方面。

標識堆棧具有以下組件:

  • 管理器:在Application中使用UserManagerRoleManager和類似的類來對數據執行必要的“業務”操作。 雖然您可以使用自定義實現替換它們,但幾乎沒有必要。
  • 存儲: UserStoreRoleStore等用於對其管理的類型執行核心數據操作。 您可以提供自定義實現來替換使用的存儲機制。 提供的商店使用實體框架對托管類型執行數據操作。 您可以替換它們以實現其他商店類型。 如果您要將用戶數據存儲為ElasticSearch中的文檔,那么這將是要實現的接口。
  • 存儲數據類型: IdentityUserIdentityRole等是保存有關用戶/角色/聲明/的信息的默認實體類型。這些類型可以進行子類化以擴展它們,或者您可以根據需要使用不同的類。 例如,如果您要存儲在ElasticSearch中,則可以重用這些類型以避免創建自定義類型來保存用戶數據。 如果您希望使用它們存儲自定義信息,則構建默認存儲(實體框架)以處理子類。 但是,只要您實現了一個知道如何使用它們的自定義商店並且它們上至少有一個Id和一個UserName屬性,您就不必使用並且可以使用您喜歡的任何類。

有關自定義選項的更多信息,請參閱ASP.NET Core Identity文檔的自定義存儲提供程序頁面。

暫無
暫無

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

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