クラス AclEntryVoter
- java.lang.Object
-
- org.springframework.security.access.vote.AbstractAclVoter
-
- org.springframework.security.acls.AclEntryVoter
- 実装されているすべてのインターフェース:
AccessDecisionVoter<org.aopalliance.intercept.MethodInvocation>
public class AclEntryVoter extends AbstractAclVoter
メソッドの引数として渡されたドメインオブジェクトインスタンスを指定して、
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, java.lang.String processConfigAttribute, Permission[] requirePermission)
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected java.lang.StringgetInternalMethod()必要に応じて、含まれているドメインオブジェクトを取得するために使用されるドメインオブジェクトのメソッドを指定します。protected java.lang.StringgetProcessConfigAttribute()voidsetInternalMethod(java.lang.String internalMethod)voidsetObjectIdentityRetrievalStrategy(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy)voidsetSidRetrievalStrategy(SidRetrievalStrategy sidRetrievalStrategy)booleansupports(ConfigAttribute attribute)このAccessDecisionVoterが、渡されたConfigAttributeに投票できるかどうかを示します。intvote(Authentication authentication, org.aopalliance.intercept.MethodInvocation object, java.util.Collection<ConfigAttribute> attributes)アクセスが許可されているかどうかを示します。クラス org.springframework.security.access.vote.AbstractAclVoter から継承されたメソッド
getDomainObjectInstance, getProcessDomainObjectClass, setProcessDomainObjectClass, supports
コンストラクターの詳細
AclEntryVoter
public AclEntryVoter(AclService aclService, java.lang.String processConfigAttribute, Permission[] requirePermission)
メソッドの詳細
getInternalMethod
protected java.lang.String getInternalMethod()
必要に応じて、含まれているドメインオブジェクトを取得するために使用されるドメインオブジェクトのメソッドを指定します。その含まれているドメインオブジェクトは、ACL の評価に使用されます。これは、ドメインオブジェクトに、子ドメインオブジェクトではなく、ACL 評価の対象となる親が含まれている場合に役立ちます。(おそらく作成されているため、まだ ACL 権限がありません)- 戻り値:
- ドメインオブジェクトを使用する
null、または ACL の評価に使用されるドメインオブジェクトとなるObjectを取得するために呼び出す必要があるメソッド(引数を必要としない)の名前
setInternalMethod
public void setInternalMethod(java.lang.String internalMethod)
getProcessConfigAttribute
protected java.lang.String getProcessConfigAttribute()
setObjectIdentityRetrievalStrategy
public void setObjectIdentityRetrievalStrategy(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy)
setSidRetrievalStrategy
public void setSidRetrievalStrategy(SidRetrievalStrategy sidRetrievalStrategy)
supports
public boolean supports(ConfigAttribute attribute)
インターフェースからコピーされた説明:AccessDecisionVoterこのAccessDecisionVoterが、渡されたConfigAttributeに投票できるかどうかを示します。これにより、
AbstractSecurityInterceptorは、構成されたAccessDecisionManagerおよび / またはRunAsManagerおよび / またはAfterInvocationManagerが消費できるすべての構成属性をチェックできます。- パラメーター:
attribute-AbstractSecurityInterceptorに対して構成された構成属性- 戻り値:
- この
AccessDecisionVoterが渡された構成属性をサポートできる場合は true
vote
public int vote(Authentication authentication, org.aopalliance.intercept.MethodInvocation object, java.util.Collection<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のいずれか