GetCapabilities no longer works when secured Layer Groups have catalog mode hide or mixed
How to reproduce the bug:
- Set Catalog Mode to Hide or Mixed
- Open the Layer Group. Select the Security tab. Assign a role. Save
- Make a GetCapabilities request
http://localhost:8080/geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities
throws the exception:
<ServiceExceptionReport version=“1.3.0” xsi:schemaLocation="http://www.opengis.net/ogc http://localhost:8080/geoserver/schemas/wms/1.3.0/exceptions_1_3_0.xsd">
<ServiceException>
javax.xml.transform.TransformerException: Translator error Translator error class com.sun.proxy.$Proxy60 cannot be cast to class org.geoserver.catalog.LayerInfo (com.sun.proxy.$Proxy60 and org.geoserver.catalog.LayerInfo are in unnamed module of loader org.eclipse.jetty.webapp.WebAppClassLoader @2657d4dd)
</ServiceException>
</ServiceExceptionReport>
From Geoserver log:
Caused by: java.lang.ClassCastException: class jdk.proxy3.$Proxy64 cannot be cast to class org.geoserver.catalog.LayerInfo (jdk.proxy3.$Proxy64 is in module jdk.proxy3 of loader org.apache.catalina.loader.ParallelWebappClassLoader @489543a6; org.geoserver.catalog.LayerInfo is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @489543a6)
at org.geoserver.security.impl.DefaultResourceAccessManager.buildInFunctionResourceFilter(DefaultResourceAccessManager.java:710) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.security.impl.DefaultResourceAccessManager.getSecurityFilter(DefaultResourceAccessManager.java:562) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.security.CatalogFilterAccessManager.getSecurityFilter(CatalogFilterAccessManager.java:178) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.security.SecureCatalogImpl.securityFilter(SecureCatalogImpl.java:1721) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.security.SecureCatalogImpl.list(SecureCatalogImpl.java:1627) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.catalog.impl.AbstractFilteredCatalog.list(AbstractFilteredCatalog.java:933) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.catalog.impl.LocalWorkspaceCatalog.list(LocalWorkspaceCatalog.java:588) ~[gs-main-2.23.0.jar:2.23.0]
at org.geoserver.wms.capabilities.Capabilities_1_3_0_Transformer$Capabilities_1_3_0_Translator.getLayers(Capabilities_1_3_0_Transformer.java:349) ~[gs-wms-2.23.0.jar:2.23.0]
at org.geoserver.wms.capabilities.Capabilities_1_3_0_Transformer$Capabilities_1_3_0_Translator.encode(Capabilities_1_3_0_Transformer.java:303) ~[gs-wms-2.23.0.jar:2.23.0]
at org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:1054) ~[gt-xml-29.0.jar:?]
at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485) ~[xalan-2.7.2.jar:?]
at org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:287) ~[gt-xml-29.0.jar:?]
at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:121) ~[gt-xml-29.0.jar:?]
at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:103) ~[gt-xml-29.0.jar:?]
at org.geoserver.wms.capabilities.Capabilities_1_3_0_Response.write(Capabilities_1_3_0_Response.java:43) ~[gs-wms-2.23.0.jar:2.23.0]
… 103 more
|