簡體   English   中英

spring 安全 (3.0.x) 和用戶模擬

[英]spring security (3.0.x) and user impersonation

在我的 web 應用程序中,有時經過身份驗證的管理員可能想要冒充系統的另一個有效用戶,而不必知道該用戶的密碼。

如何使用 Spring Security 讓管理員用戶能夠模擬系統的普通(非管理員)用戶?

Spring 安全文檔對此保持沉默,我在任何地方都找不到任何東西。 肯定有人解決了這個問題。

謝謝!

它在Spring 安全 3Spring 安全 4文檔中恰當地命名為“Run-As Authentication Replacement”。

AbstractSecurityInterceptor 能夠在安全 object 回調階段臨時替換 SecurityContext 和 SecurityContextHolder 中的 Authentication object。

我相信在 Spring 安全性中推薦的方法是使用域訪問控制列表,請參閱 GrantedAuthoritySid @

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/domain-acls.html

但是,冒充另一個用戶不僅僅是擁有“代表身份”,您還應該考慮對日志記錄的影響:

  • 您希望您的日志記錄顯示為原始用戶還是模擬用戶(或兩者兼而有之?)
  • 您是否希望“模擬”僅顯示模擬用戶看到的內容,還是原始用戶和模擬用戶權限的超集?

另一種可能性是創建一個“登錄身份”功能,它實質上改變了當前 session 的主要身份 - 或使用模擬身份啟動一個新的 session。

在上述所有情況下,您可能會無意中打開一個安全問題 - 所以我認為這就是為什么模擬風格的功能不那么常見的原因。 相反,設計趨向於基於角色的訪問控制 (RBAC) 或基於屬性的訪問控制 (ABAC)。 使用 RBAC / ABAC,您可以創建一個委托樣式功能,您可以在其中創建委托屬性/角色 - 在您需要顯示委托的源/目標的特殊情況下(例如,對於審計日志),您可以將這些作為極端情況處理.

如果您希望管理員用戶能夠模擬另一個用戶(例如,出於 QA/測試目的),請查看 SwitchUserFilter

此處提供了您需要的 XML 配置的一個不錯的示例

暫無
暫無

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

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