Authentication 在评估基于JavaScript的策略时,keydape获取例外

Authentication 在评估基于JavaScript的策略时,keydape获取例外,authentication,keycloak,Authentication,Keycloak,我创建了以下简单策略: var identity=$evaluation.getIdentity; if identity.hasRole“查看设备”{ $评估补助金; } 并将此策略与使用权限的特定资源相关联 但当我尝试测试权限时,服务器日志中出现了下一个错误: 11:42:05172错误[org.jboss.resteasy.resteasy_jaxrs.i18n]默认任务-44 RESTEASY002020:未处理的异步异常,发回500:org.jboss.resteasy.spi.Unh

我创建了以下简单策略:

var identity=$evaluation.getIdentity; if identity.hasRole“查看设备”{ $评估补助金; } 并将此策略与使用权限的特定资源相关联

但当我尝试测试权限时,服务器日志中出现了下一个错误:

11:42:05172错误[org.jboss.resteasy.resteasy_jaxrs.i18n]默认任务-44 RESTEASY002020:未处理的异步异常,发回500:org.jboss.resteasy.spi.UnhandledException:java.lang.RuntimeException:错误评估JS策略[检查角色]。 位于org.jboss.resteasy.core.ExceptionHandler.handleExceptionExceptionHandler.java:247 位于org.jboss.resteasy.core.SynchronousDispatcher.writeExceptionSynchronousDispatcher.java:168 位于org.jboss.resteasy.core.SynchronousDispatcher.asynchronousExceptionDeliverySynchronousDispatcher.java:437 位于org.jboss.resteasy.core.AbstractAsynchronousResponse.InternalResumeAstractAsynchronousResponse.java:191 位于org.jboss.resteasy.plugins.server.servlet.Servlet3AsyncHttpRequest$Servlet3ExecutionContext$Servlet3AsynchronousResponse.resumeServlet3AsyncHttpRequest.java:114 在org.keydape.authorization.authorigent.authorigentService$1.onerrorAuthenticationService.java:125 位于org.keydape.authorization.permission.evaluator.IterablePermissionEvaluator.evaluateTerablePermissionevaluator.java:50 位于org.keydape.authorization.permission.evaluator.DefaultPermissionEvaluator.evaluateDefaultPermissionEvaluator.java:36 在org.keydape.authorization.authorigent.authorigenmentservice.getAllEntitlementService.java:121 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中 位于sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62 在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 位于java.lang.reflect.Method.invokeMethod.java:498 位于org.jboss.resteasy.core.MethodInjectorImpl.invokeMethodInjectorImpl.java:139 位于org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetResourceMethodInvoker.java:295 位于org.jboss.resteasy.core.ResourceMethodInvoker.invokeResourceMethodInvoker.java:249 位于org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObjectResourceLocatorInvoker.java:138 位于org.jboss.resteasy.core.ResourceLocatorInvoker.invokeResourceLocatorInvoker.java:107 位于org.jboss.resteasy.core.ResourceLocatorInvoker.InvokeonTargetObject ResourceLocatorInvoker.java:133 位于org.jboss.resteasy.core.ResourceLocatorInvoker.invokeResourceLocatorInvoker.java:101 位于org.jboss.resteasy.core.SynchronousDispatcher.invokeSynchronousDispatcher.java:395 位于org.jboss.resteasy.core.SynchronousDispatcher.invokeSynchronousDispatcher.java:202 位于org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.serviceServletContainerDispatcher.java:221 位于org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.serviceHttpServletDispatcher.java:56 位于org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.serviceHttpServletDispatcher.java:51 位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:790 位于io.undertow.servlet.handlers.ServletHandler.HandlerRequestServletHandler.java:85 位于io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilterFilterHandler.java:129 位于org.keydeport.services.filters.keydeposessionservletfilter.dofilterkeydeposessionservletfilter.java:90 位于io.undertow.servlet.core.ManagedFilter.doFilterManagedFilter.java:60 位于io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilterFilterHandler.java:131 位于io.undertow.servlet.handlers.FilterHandler.HandlerRequestFilterHandler.java:84 位于io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.HandlerRequestServletSecurityRoleHandler.java:62 位于io.undertow.servlet.handlers.ServletDispatchingHandler.HandlerRequestServletDispatchingHandler.java:36 位于org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.HandlerRequestSecurityContextAssociationHandler.java:78 位于io.undertow.server.handlers.PredicateHandler.HandlerRequestPredicateHandler.java:43 位于io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequestSSLInformationAssociationHandler.java:131 位于io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.HandlerRequestServletAuthenticationCallHandler.java:57 位于io.undertow.server.handlers.PredicateHandler.HandlerRequestPredicateHandler.java:43 位于io.undertow.security.handler.AbstractSecretentityHandler.HandlerEquirestAbstractSecretentityHandler.java:46 位于io.undertow.servlet.handlers.security.ServletSecretentityConstraintHandler.HandlerRequestServletSecretentityConstraintHandler.java:64 位于io.undertow.security.handler.AuthenticationMechanismsHandler.HandlerRequestAuthenticationMechanismShandler.java:60 在io.undertow.servlet.handlers.security.cached上 HandlerRequestCachedAuthenticatedSessionHandler.java:77 位于io.undertow.security.handlers.NotificationReceiverHandler.HandlerRequestNotificationReceiverHandler.java:50 位于io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.HandlereRequestAbstractSecurityContextAssociationHandler.java:43 位于io.undertow.server.handlers.PredicateHandler.HandlerRequestPredicateHandler.java:43 位于org.wildfly.extension.undertow.security.jacc.jaccontextidhandler.handleRequestjaccontextidhandler.java:61 位于io.undertow.server.handlers.PredicateHandler.HandlerRequestPredicateHandler.java:43 位于io.undertow.server.handlers.PredicateHandler.HandlerRequestPredicateHandler.java:43 在io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequestServletInitialHandler.java:284 在io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequestServletInitialHandler.java:263 在io.undertow.servlet.handlers.ServletInitialHandler.access$000ServletInitialHandler.java:81 在io.undertow.servlet.handlers.ServletInitialHandler$1.HandlerRequestServletInitialHandler.java:174 在io.undertow.server.Connectors.executeRootHandlerConnectors.java:202 位于io.undertow.server.HttpServerExchange$1.runHttpServerExchange.java:793 位于java.util.concurrent.ThreadPoolExecutor.runWorkerThreadPoolExecutor.java:1142 位于java.util.concurrent.ThreadPoolExecutor$Worker.runThreadPoolExecutor.java:617 java:748 原因:java.lang.RuntimeException:评估JS策略[Check role]时出错。 位于org.keydape.authorization.policy.provider.js.JSPolicyProvider.evaluateJSPolicyProvider.java:51 位于org.keydeport.authorization.policy.evaluation.DefaultPolicyEvaluator.lambda$createDecisionConsumer$4DefaultPolicyEvaluator.java:119 位于java.util.ArrayList.forEachArrayList.java:1249 在org.keydape.authorization.policy.evaluation.DefaultPolicyEvaluator.EvaluatePolicyesDefaultPolicyEvaluator.java:100 位于org.keydape.authorization.policy.evaluation.DefaultPolicyEvaluator.evaluateDefaultPolicyEvaluator.java:75 位于org.keydape.authorization.permission.evaluator.IterablePermissionEvaluator.evaluateTerablePermissionEvaluator.java:46 ... 还有51个 原因:javax.script.ScriptException:TypeError:$evaluation.getIdentity不是第1行的函数 位于jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptExceptionNashornScriptEngine.java:470 位于jdk.nashorn.api.scripting.NashornScriptEngine.evalImplNashornScriptEngine.java:454 位于jdk.nashorn.api.scripting.NashornScriptEngine.evalImplNashornScriptEngine.java:406 位于jdk.nashorn.api.scripting.NashornScriptEngine.evalImplNashornScriptEngine.java:402 位于jdk.nashorn.api.scripting.NashornScriptEngine.evalNashornScriptEngine.java:155 位于javax.script.AbstractScriptEngine.evalAbstractScriptEngine.java:264 位于org.keydape.authorization.policy.provider.js.JSPolicyProvider.evaluateJSPolicyProvider.java:49 ... 56多 由::1 TypeError引起:$evaluation.getIdentity不是函数 位于jdk.nashorn.internal.runtime.ECMAErrors.errorECMAErrors.java:57 在jdk.nashorn.internal.runtime.ECMAErrors.typeErrorECMAErrors.java:213 在jdk.nashorn.internal.runtime.ECMAErrors.typeErrorECMAErrors.java:185 在jdk.nashorn.internal.runtime.ECMAErrors.typeErrorECMAErrors.java:172 位于jdk.nashorn.internal.runtime.Undefined.lookupUndefined.java:102 在jdk.nashorn.internal.runtime.linker.NashornLinker.getguardInvocationnashornlinker.java:106 在jdk.nashorn.internal.runtime.linker.NashornLinker.getguardInvocationnashornlinker.java:98 位于jdk.internal.dynalink.support.compositeTypebasedGuardingDynamicScalt.GetGuardedInvocationCompositeTypebasedGuardingDynamicScalt.java:176 位于jdk.internal.dynalink.support.compositeguardingdynamicsold.getguardinvocationcompositeguardingdynamicsold.java:124 位于jdk.internal.dynalink.support.LinkerServiceSiml.GetGuardInvocationLinkerServiceSiml.java:154 位于jdk.internal.dynalink.dynamicsold.relinkdynamicsold.java:253 在jdk.nashorn.internal.scripts.Script$7$^eval\:程序:1 位于jdk.nashorn.internal.runtime.ScriptFunctionData.invokeScriptFunctionData.java:637 位于jdk.nashorn.internal.runtime.ScriptFunction.invokeScriptFunction.java:494 位于jdk.nashorn.internal.runtime.ScriptRuntime.applyScriptRuntime.java:393 在jdk.nashorn 我没有更改任何默认配置,并且创建了角色视图设备。如果有人遇到同样的错误,请帮助


提前感谢您。

我找到了解决方案:这是KeyClope文档中的输入错误。 因此,为了在没有错误的情况下评估javascript策略,应该在对象上下文上调用getIdentity方法:

var context=$evaluation.getContext; var identity=context.getIdentity; if identity.hasRole“查看设备”{ $评估补助金; }
你能在这里开一张文件打字的罚单吗?谢谢