我計劃在ASP.NET Core上使用IdentityServer 4作爲數據存儲。這是我第一次使用中央認證/授權,我想知道如何解決以下問題:IdentityServer 4和特定於作用域的用戶設置
假設我的用戶擁有類似名稱,角色等聲明和允許這些用戶的Web API(範圍)從硬件設備訪問測量值。 IdentityServer將允許我對已知用戶進行身份驗證,但現在我需要一個訪問控制,以瞭解哪些用戶可以訪問哪些設備數據。
我在哪裏存儲這些信息?由於它是特定於範圍,我猜它不應該存儲在IdentityServers存儲中。另一方面,如果我將它存儲在作用域自己的數據庫中,我需要將它連接到IdentityServers存儲中定義的用戶。我應該定義對所有範圍和IdentityServer唯一的用戶ID嗎?
感謝您的回答,並對延誤表示歉意。我不太明白你描述的問題。我認爲它會像這樣工作:用戶將瀏覽器指向登錄頁面並輸入其憑據。登錄頁面使用IdentityServer對用戶進行身份驗證,取回令牌並將其重定向到起始頁面。起始頁面使用WebApi(傳遞令牌)枚舉所有可訪問的設備。這個概念有什麼問題嗎? – NicolasR
有一點,範圍是定義客戶可能想要訪問的資源的索賠,而不是用戶。 「我需要知道哪些用戶可以訪問哪些設備數據的訪問控制」(據我所知)轉換爲基於資源的認證問題。您想根據資源執行訪問控制(在這種情況下,資源是設備數據) 基於資源的身份驗證的官方文檔: https://docs.asp.net/en/latest/security/authorization/resourcebased .html 寫了一篇關於它的博客: http://lutando.net/2016/10/authorization-assertions-on-resources-in-asp-net-core/ – Lutando
很棒的博客文章!我必須考慮這一點。在較早和較簡單的實現中,我們使用ASP.NET身份並創建了與設備關聯的角色(組)。允許屬於某個組的用戶查看關聯設備的數據。但在那裏很容易,因爲用戶,角色和設備定義都在數據庫中。 – NicolasR