Asp.net-Core

IdentityServer4 和使用者管理

  • July 17, 2018

我一直在網上尋找一些關於 IdentityServer4 的數據以及它的真正用途。

據我目前所了解的,IdentityServer4 是令牌頒發者,它是一個系統,它將保持特定客戶端可以訪問或不可以訪問的資源之間的連結。因此,IdentityServer 將獲取客戶端標識以說明它是否有權訪問此資源,或者它將獲取使用者標識(也稱為郵件和密碼)以獲取令牌以說明使用者是否已註冊。

如果我沒記錯的話,這意味著使用者儲存必須靠近 IdentityServer 或者 IdentityServer 應該知道使用者儲存中所做的每一個修改。關於身份伺服器的最新版本,我還沒有找到一些有價值的東西。而且,好像IdentityServer需要AspNet Identity,也就是說資訊會重複……

有什麼我不明白或弄錯了嗎?如果沒有,它是如何輕鬆實現的(考慮到我是從頭開始,我必須遷移舊的舊使用者儲存)?

您有幾個使用者管理選項:

  1. 正如你所說 - 使用Asp NET Identity
  2. 使用實體框架
  3. 使用自己創建的自定義邏輯

選項 1 和 2 有很多範例和每個範例的快速入門,所以我不會深入那裡。

選項 3 - 自定義實現。我們最終得到了這一點。我們有很多自定義的東西(感覺與擴展/覆蓋 EF 方法無關),我們不需要 Asp NET Identity,因此決定使用自定義實現。

或多或少-我們有一個數據庫,可以容納我們的使用者。用於訪問 db 的 EF(與 PostgreSQL、SQL Server 等一起使用,因此您可以在這裡自由發揮)和自定義服務,用於 CRUD 操作以及您的表所需的任何其他內容。

IdentityServer 允許您連接它使用的幾乎每個服務/儲存的自定義實現:

services.AddIdentityServer()
           .AddInMemoryCaching()
           .AddProfileService<ProfileService>()
           .AddClientStoreCache<ClientStore>()
           .AddResourceStoreCache<ApiResourceStore>()

所有這些都是其介面的自定義實現。您還可以自由修改AccountController實際登錄發生的位置,因此您可以在那裡連接您的使用者服務,並檢查您自己的數據庫。

所以基本上這裡的方法取決於你,你的時間框架等。

引用自:https://stackoverflow.com/questions/51384446