クラス AclEntryVoter
- 実装されたすべてのインターフェース:
AccessDecisionVoter<org.aopalliance.intercept.MethodInvocation>
メソッドの引数として渡されたドメインオブジェクトインスタンスを指定して、AclService
で示されているように、プリンシパルに適切な権限があることを確認します。
AclService は、現在の Authentication オブジェクトのドメインオブジェクトインスタンスに関連付けられているアクセス制御リスト(ACL)のアクセス許可を取得するために使用されます。
投票者は、ConfigAttribute.getAttribute()
が processConfigAttribute
と一致する場合に投票します。次に、プロバイダは AbstractAclVoter.processDomainObjectClass
型の最初のメソッド引数を見つけます。メソッドの引数が null でない場合、プロバイダーは AclManager
から ACL を検索し、そのメソッドに requirePermission
配列を提示するときにプリンシパルが Acl.isGranted(List, List, boolean)
であることを確認します。
メソッドの引数が null の場合、投票者は投票を控えます。メソッドの引数が見つからなかった場合、AuthorizationServiceException
がスローされます。
実際には、ユーザーは通常、多数の AclEntryVoter をセットアップします。それぞれに異なる processDomainObjectClass
、processConfigAttribute
、requirePermission
の組み合わせがあります。例: 小さなアプリケーションでは、AclEntryVoter の次のインスタンスを使用する場合があります。
- プロセスドメインオブジェクトクラス
BankAccount
、構成属性VOTE_ACL_BANK_ACCONT_READ
、許可BasePermission.READ
が必要 - プロセスドメインオブジェクトクラス
BankAccount
、構成属性VOTE_ACL_BANK_ACCOUNT_WRITE
、許可リストBasePermission.WRITE
およびBasePermission.CREATE
が必要 (プリンシパルがこれら 2 つの権限のいずれかを持つことを許可する) - プロセスドメインオブジェクトクラス
Customer
、構成属性VOTE_ACL_CUSTOMER_READ
、許可BasePermission.READ
が必要 - プロセスドメインオブジェクトクラス
Customer
、構成属性VOTE_ACL_CUSTOMER_WRITE
、許可リストBasePermission.WRITE
およびBasePermission.CREATE
が必要
BankAccount
と Customer
の両方に共通の親がある場合は、AbstractAclVoter.processDomainObjectClass
に共通のスーパークラスまたはインターフェースを使用することもできます。プリンシパルに十分な権限がない場合、投票者は投票を行ってアクセスを拒否します。
すべての比較と接頭辞は大文字と小文字が区別されます。
フィールドサマリー
インターフェース org.springframework.security.access.AccessDecisionVoter から継承されたフィールド
ACCESS_ABSTAIN, ACCESS_DENIED, ACCESS_GRANTED
コンストラクターのサマリー
コンストラクターコンストラクター説明AclEntryVoter
(AclService aclService, StringSE processConfigAttribute, Permission[] requirePermission) 方法の概要
修飾子と型メソッド説明protected StringSE
必要に応じて、含まれているドメインオブジェクトを取得するために使用されるドメインオブジェクトのメソッドを指定します。protected StringSE
void
setInternalMethod
(StringSE internalMethod) void
setObjectIdentityRetrievalStrategy
(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy) void
setSidRetrievalStrategy
(SidRetrievalStrategy sidRetrievalStrategy) boolean
supports
(ConfigAttribute attribute) このAccessDecisionVoter
が、渡されたConfigAttribute
に投票できるかどうかを示します。int
vote
(Authentication authentication, org.aopalliance.intercept.MethodInvocation object, CollectionSE<ConfigAttribute> attributes) アクセスが許可されているかどうかを示します。クラス org.springframework.security.access.vote.AbstractAclVoter から継承されたメソッド
getDomainObjectInstance, getProcessDomainObjectClass, setProcessDomainObjectClass, supports
コンストラクターの詳細
AclEntryVoter
public AclEntryVoter(AclService aclService, StringSE processConfigAttribute, Permission[] requirePermission)
メソッドの詳細
getInternalMethod
必要に応じて、含まれているドメインオブジェクトを取得するために使用されるドメインオブジェクトのメソッドを指定します。その含まれているドメインオブジェクトは、ACL の評価に使用されます。これは、ドメインオブジェクトに、子ドメインオブジェクトではなく、ACL 評価の対象となる親が含まれている場合に役立ちます。(おそらく作成されているため、まだ ACL 権限がありません)- 戻り値:
- ドメインオブジェクトを使用する
null
、または ACL の評価に使用されるドメインオブジェクトとなるObject
を取得するために呼び出す必要があるメソッド(引数を必要としない)の名前
setInternalMethod
getProcessConfigAttribute
setObjectIdentityRetrievalStrategy
public void setObjectIdentityRetrievalStrategy(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy) setSidRetrievalStrategy
supports
インターフェースからコピーされた説明:AccessDecisionVoter
このAccessDecisionVoter
が、渡されたConfigAttribute
に投票できるかどうかを示します。これにより、
AbstractSecurityInterceptor
は、構成されたAccessDecisionManager
および / またはRunAsManager
および / またはAfterInvocationManager
が消費できるすべての構成属性をチェックできます。- パラメーター:
attribute
-AbstractSecurityInterceptor
に対して構成された構成属性- 戻り値:
- この
AccessDecisionVoter
が渡された構成属性をサポートできる場合は true
vote
public int vote(Authentication authentication, org.aopalliance.intercept.MethodInvocation object, CollectionSE<ConfigAttribute> attributes) インターフェースからコピーされた説明:AccessDecisionVoter
アクセスが許可されているかどうかを示します。決定は肯定的(
ACCESS_GRANTED
)、否定的(ACCESS_DENIED
)でなければなりません。そうでない場合、AccessDecisionVoter
は投票を棄権(ACCESS_ABSTAIN
)できます。どのような状況でも、実装クラスは他の値を返しません。結果の重み付けが必要な場合は、代わりにカスタムAccessDecisionManager
で処理する必要があります。AccessDecisionVoter
は、渡されたメソッド呼び出しまたは構成属性パラメーターが原因でアクセス制御の決定に投票することを特に意図していない限り、ACCESS_ABSTAIN
を返す必要があります。これにより、調整するAccessDecisionManager
が、アクセス制御の決定に正当な関心を持たずに、それらのAccessDecisionVoter
からの投票をカウントすることを防ぎます。セキュリティで保護されたオブジェクト(
MethodInvocation
など)がパラメーターとして渡され、アクセス制御の決定を行う際の柔軟性を最大化しますが、実装クラスはそれを変更したり、(たとえば、MethodInvocation.proceed()
を呼び出して)呼び出されたりしないようにする必要があります。- パラメーター:
authentication
- 呼び出しを行う呼び出し元object
- 呼び出されている保護されたオブジェクトattributes
- 保護されたオブジェクトに関連付けられた構成属性- 戻り値:
AccessDecisionVoter.ACCESS_GRANTED
、AccessDecisionVoter.ACCESS_ABSTAIN
またはAccessDecisionVoter.ACCESS_DENIED
のいずれか