Spring Security と ACL サポートを既存の GWT アプリケーションに統合しようとしていますが、役に立たない別のリンクをクリックすると、新しいマウスとキーボードが必要になると断言できます。Spring を使用して LDAP を介して Active Directory に対して認証を行うために必要なものを検討し、AD 属性 (つまり、グループ メンバーシップ) に基づいてカスタム アクセス許可を割り当てる方法を検討しました。カスタム ACL スキーマを使用してアクセス許可に対してカスタム チェックを実行する (真のビットマスク操作)。私が把握していないのは、ACL テーブルに何が入るかだけです。
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