2016-02-04 20 views
1

我們目前正在定稿的Java EE應用程序使用JBoss PicketLink和Apache DeltaSpike作爲其安全框架。所有的認證和授權決定都是使用這些庫完成的。由於我們的高安全性要求,我們的大多數EJB服務方法都有權限檢查。在某些情況下,非特權用戶需要執行特權操作。例如,只有管理員角色的用戶才能創建用戶帳戶。但是,在用戶自行註冊期間,需要創建用戶帳戶。通常,我們會對此敏感操作使用諸如「運行方式」之類的內容,因此對於單個調用,非特權用戶將有權執行特權操作。使用JBoss PicketLink的「RunAs」支持?

但是,我沒有看到PicketLink文檔或示例中的任何內容,表明PicketLink支持此功能。我知道其他的安全框架。 Java EE甚至通過@RunAs註解支持這一點。然而,我們不希望這樣做,因爲我們希望對可應用的位置進行非常細緻的控制。

任何人都可以指向我的任何文檔或例子,將解釋如何做到這一點? PicketLink支持這種功能嗎?或者我們運氣不好?你有不同的方法可以用來解決這種情況和要求嗎?

+0

您是否在PicketLink中使用XACML?運行方式特徵通常作爲身份驗證框架和使用屬性的策略的組合來實現,例如, onbehalfof ... –

+0

不使用XACML。這似乎是比我們現在需要的更重量級的增加。 – Shadowman

+0

XACML並不重量級,但考慮到您的用例,聽起來您需要身份驗證層來處理模仿 –

回答

0

應該沒有必要運行。如果允許未經身份驗證的用戶自行註冊,則不應限制用戶創建到管理員。根據定義,任何非特權用戶都可以做的事情不是一個敏感的行爲。如果管理員在創建用戶帳戶方面有更大的靈活性,那麼可以編寫兩種服務方法:管理員用於爲其他用戶創建用戶帳戶,以及未經身份驗證的用戶用於自我註冊的受限用戶。

+0

用戶註冊只是我們需要此功能的一個示例。還有一些時候,如果沒有經過身份驗證的用戶可能需要執行特權操作(例如,由MDB啓動的異步進程) – Shadowman

+0

異步過程就是一個更好的例子。就我個人而言,我傾向於使用PicketLink進行身份驗證,但不是用於授權,特別是在授權要求達到某個複雜性閾值時。授權很容易處理應用程序級別。 –