3

現在、コンテナを JBoss AS 7 から Wildfly 10 に更新中です。Deltaspike の統合を除いて、移行は順調に進んでいます。JBoss AS 7 AS では、すべてが期待どおりに機能していました。カスタムの SecurityBindingTypes と SecurityParameterBindings を作成するだけで済みました。Wildfly 10 で同じコードを実行しようとすると、次のエラーが発生します。

原因: java.lang.IllegalStateException: オーソライザー メソッド Bean の検索中に例外が発生しました - メソッド [class com.mimeya.deb.security.CustomAuthorizer.doSecuredComplianceReportReadAccessCheckForUnitId] の Bean が org.apache.deltaspike.security.impl.extension.Authorizer で見つかりませんでした。 org.apache.deltaspike.security.impl.extension.Authorizer.authorize(Authorizer.java:174) の lazyInitTargetBean(Authorizer.java:215) org.apache.deltaspike.security.impl.extension.DefaultSecurityStrategy.invokeBeforeMethodInvocationAuthorizers(DefaultSecurityStrategy. java:80) org.apache.deltaspike.security.impl.extension.DefaultSecurityStrategy.execute(DefaultSecurityStrategy.java:62) で org.apache.deltaspike.security.impl.extension.SecurityInterceptor.filterDeniedInvocations(SecurityInterceptor.java:44) で太陽で。反射します。NativeMethodAccessorImpl.invoke0(Native Method) の sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) の sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) の java.lang.reflect.Method.invoke(Method. java:498) org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74) で org.jboss.weld.interceptor.proxy.WeldInvocationContext.invokeNext(WeldInvocationContext.java:83) で.jboss.weld.interceptor.proxy.WeldInvocationContext.proceed(WeldInvocationContext.java:115) org.jboss.weld.bean.InterceptorImpl.intercept(InterceptorImpl.java:108) org.jboss.as.weld.ejb.DelegatingInterceptorInvocationContext .proceed(DelegatingInterceptorInvocationContext.java:77) org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:68) org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:80) at org.jboss.as.weld.ejb. Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:93) org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) ) org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) で org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) で org.jboss.as.jpa.インターセプター.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) で org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437) で org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke (AbstractEJBRequestScopeActivationInterceptor.java:64) org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) org.jboss. as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)組織で。org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor. java:52) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) で org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) で org.jboss.invocation .InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) ... 144 もっと見るorg.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52) の processInvocation(ChainedInterceptor.java:61) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) の org org.jboss.as.ejb3.tx.CMTTxInterceptor の .jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) .invokeInOurTx(CMTTxInterceptor.java:275) ... 144 もっと見るorg.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52) の processInvocation(ChainedInterceptor.java:61) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) の org org.jboss.as.ejb3.tx.CMTTxInterceptor の .jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) .invokeInOurTx(CMTTxInterceptor.java:275) ... 144 もっと見るPooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) .. . 144 以上PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) .. . 144 以上

参考までに、これはカスタム SecurityBindingType です。

@Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@SecurityBindingType
public @interface CustomSecurityBinding {}

これは、カスタム SecurityParameterBindings の 1 つです。

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value={ElementType.PARAMETER})
@Documented
@SecurityParameterBinding
public @interface SecureComplianceReportReadAccessUnit {}

これは、私が呼び出しているメソッドの 1 つの例です。

@Secures
@CustomSecurityBinding
public boolean doSecuredComplianceReportReadAccessCheckForUnit(@SecureComplianceReportReadAccessUnit Unit unit) throws Exception {
    COMPONENT component = COMPONENT.COMPLIANCE_REPORTS;
    int permission = UserPermission.READ_ACCESS;
    return manageSecurityBean.canUserPerformAction(userSessionBean.getUserAccess(), component.getDatabaseId(), permission, -1, -1, -1, unitId);
}

私はたくさんのドキュメントを読んでいますが、役に立ちません。クイック スタート ガイド ( https://github.com/wildfly/quickstart/tree/10.x/deltaspike-authorization )、JBoss 開発者フォーラム、および Deltaspike ソース コード自体を見てきました。試してみるための助けやアイデアは大歓迎です。ありがとうございました。

4

0 に答える 0