クラス 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.String
getInternalMethod()
必要に応じて、含まれているドメインオブジェクトを取得するために使用されるドメインオブジェクトのメソッドを指定します。protected java.lang.String
getProcessConfigAttribute()
void
setInternalMethod(java.lang.String internalMethod)
void
setObjectIdentityRetrievalStrategy(ObjectIdentityRetrievalStrategy objectIdentityRetrievalStrategy)
void
setSidRetrievalStrategy(SidRetrievalStrategy sidRetrievalStrategy)
boolean
supports(ConfigAttribute attribute)
このAccessDecisionVoter
が、渡されたConfigAttribute
に投票できるかどうかを示します。int
vote(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
のいずれか