簡體   English   中英

Spring 基於安全用戶的權限? (不基於角色)

[英]Spring security user based permission? (not role based)

假設我有一個由用戶和項目組成的數據庫。 用戶與項目具有一對多的關系。 用戶可以使用 rest 端點進行操作。

問題是:如何驗證用戶是否擁有資源?

我不希望惡意用戶更改 id 然后突然查看另一個人的項目詳細信息/圖像/等。 把它想象成社交媒體(我的應用程序不是社交媒體,但試圖說明問題):盡管具有相同的“狀態”,但您只能查看自己的圖像而不能查看其他人的圖像。

大多數 spring-security 在線博客都使用基於角色的方法。 在這種情況下,我什至不知道要搜索什么(嘗試了多個搜索查詢無濟於事)。

一種選擇是對每個資源請求/操作運行某種多連接查詢,直到我到達該資源 ID 並檢查它的擁有用戶以檢查它是否是登錄用戶。 但是,我不確定這種方式是否有效,因為在真實應用程序中的鏈中有多個表(如果我手動 go 這種方式可能會有很多連接;示例:用戶 -> 項目 -> 任務列表 -> .. . -> 注意;刪除注釋會觸發大鏈)或如何讓“授權者”使用它。

我有什么選擇?

以防萬一:我正在使用 spring-boot + hibernate/JPA + spring-security

Spring Security有以下幾個概念:

驗證:

證明演員是它所保證的人。 身份驗證是使用credentials完成的,其中 credentials 可以采用任意數量的 forms - 用戶名/密碼、令牌、硬件密鑰等。

您可以使用一組可接受的身份驗證提供程序設置 Spring 安全性。

授權:

給定一個經過身份驗證的用戶,決定該用戶是否可以訪問給定的資源。 資源可以在哪里:

  • 一個 HTTP 端點。
  • Java 方法。
  • object的一個屬性。

您在這里要做的是提供自定義授權方案。

您可以在這里閱讀 Spring Security 的授權架構,包括如何設置自定義授權。 准備就緒后,您可以在 go 中提出具體問題。

暫無
暫無

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

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