什么可能导致 glassfish 7 上出现无效的 URLPatternSpec 异常以及如何修复它?

问题描述 投票:0回答:1

[2024-02-09T18:49:24.885241Z] [GF 7.0.11] [严重] [] [com.sun.web.security.RealmAdapter] [tid: _ThreadID=30 _ThreadName=http-listener-1(3 )] [等级值:1000] [[ 身份验证通过,但授权失败。 java.lang.IllegalArgumentException:无效的 URLPatternSpec 在 jakarta.security.jacc.URLPatternSpec.setURLPatternArray(URLPatternSpec.java:326) 在 jakarta.security.jacc.URLPatternSpec.(URLPatternSpec.java:79) 在 jakarta.security.jacc.WebResourcePermission.(WebResourcePermission.java:141) 在 org.glassfish.exousia.AuthorizationService.checkWebResourcePermission(AuthorizationService.java:454) 在 org.glassfish.exousia.AuthorizationService.checkWebResourcePermission(AuthorizationService.java:442) 在 com.sun.enterprise.security.ee.web.integration.WebSecurityManager.hasResourcePermission(WebSecurityManager.java:260) 在 com.sun.web.security.RealmAdapter.invokeWebSecurityManager(RealmAdapter.java:1151) 在 com.sun.web.security.RealmAdapter.preAuthenticateCheck(RealmAdapter.java:450) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:415) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:529) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:503) 在 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:71) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:121) 在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:295) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:188) 在 com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:425) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144) 在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174) 在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153) 在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196) 在 org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51) 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510) 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515) 在 java.base/java.lang.Thread.run(Thread.java:842)

我尝试在 server.policy 中授予权限 我尝试在 web.xml 中定义网络资源

glassfish
1个回答
0
投票

特定请求 URL 是否会发生这种情况? URL 是否包含冒号(字符

:
)?

如果是,那么看起来这是 GlassFish 中的一个错误。服务器检查调用者是否有权访问 URL 资源,并将 URL 传递给授权服务。如 WebResourcePermission docs 中所述,

:
用作多个 URL 之间的分隔符,应通过单个方法调用进行检查。如果
:
位于某个 URL 内,则应对其进行转义,但 GlassFish 不会执行此操作。

您可以向项目维护人员提出问题并询问他们是否可以解决该问题。或者,如果可以的话,避免在 URL 中使用

:

© www.soinside.com 2019 - 2024. All rights reserved.