我試圖將Spring Security與ACL支持集成到現有的GWT應用程序中,如果我點擊另一個無用的鏈接,我發誓將需要一個新的鼠標和鍵盤。我已經完成了使用Spring通過LDAP對Active Directory進行身份驗證所需的工作,並且我已經制定了如何根據AD屬性(即組成員身份)分配自定義權限,並且我甚至已經研究過如何使用自定義ACL架構對權限執行自定義檢查(真正的位掩碼操作)。我沒有想到的只是ACL表中的內容。Spring Security的ACL_OBJECT_IDENTITY表有何含義?
ACL_SID
id:bigint (pk)
principal:boolean (ak)
sid:varchar (ak)
此表是不言自明;我們只會在這裏使用非主體條目。
ACL_CLASS
id:bigint (pk)
class:varchar (ak)
該表也是不言自明。據我瞭解,我們只是爲我們希望保護的每個類/接口創建一個入口。
ACL_ENTRY
id:bigint (pk)
acl_object_identity:bigint (fak)
ace_order:int (ak)
sid:bigint (fk)
mask:bigint
granting:boolean
audit_success:boolean
audit_failure:boolean
此表也大多不言自明;我們已經在mask
字段中用bigint/long定製了架構,但問題源於acl_object_identity
引用的內容。顯然,它指向ACL_OBJECT_IDENTITY
現場,但...
ACL_OBJECT_IDENTITY
id:bigint (pk)
object_id_class:bigint (fak)
object_id_identity:bigint (ak)
parent_object_identity:bigint (fk)
owner_sid:bigint (fk)
entries_inheriting:boolean
的object_id_identity
是什麼?一個方法?它如何通過Spring Security的註釋來引用?
MyClass.java
@PreAuthorize("hasPermission(#someInput, 'READ')")
public boolean myMethod(String someInput) {
return true;
}
據推測,#someInput
莫名其妙指ACL_OBJECT_IDENTITY.object_id_identity
領域,但如何?