クラス 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 StringSEvoidsetInternalMethod(StringSE internalMethod) voidsetObjectIdentityRetrievalStrategy(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy) voidsetSidRetrievalStrategy(SidRetrievalStrategy sidRetrievalStrategy) booleansupports(ConfigAttribute attribute) このAccessDecisionVoterが、渡されたConfigAttributeに投票できるかどうかを示します。intvote(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のいずれか