{"record":{"id":"465d87369bbe66d0","repo":"apereo/cas","slug":"skipping-metadata-either-the-resource-cannot","errorCode":null,"errorMessage":"Skipping metadata [{}]; Either the resource cannot be retrieved or its signing key is missing","messagePattern":"Skipping metadata \\[(.+?)\\]; Either the resource cannot be retrieved or its signing key is missing","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"support/cas-server-support-saml-mdui/src/main/java/org/apereo/cas/config/SamlMetadataUIConfiguration.java","lineNumber":98,"sourceCode":"            }\n            var addResource = true;\n            if (StringUtils.isNotBlank(signingKey)) {\n                val sigFilter = SamlUtils.buildSignatureValidationFilter(applicationContext, signingKey);\n                if (sigFilter != null) {\n                    sigFilter.setRequireSignedRoot(casProperties.getSamlMetadataUi().isRequireSignedRoot());\n                    sigFilter.initialize();\n                    filters.add(sigFilter);\n                } else {\n                    LOGGER.warn(\"Failed to locate the signing key [{}] for [{}]\", signingKey, metadataReference);\n                    addResource = false;\n                }\n            }\n            chain.setFilters(filters);\n            if (addResource && (ResourceUtils.isUrl(metadataReference) || ResourceUtils.doesResourceExist(metadataReference))) {\n                val resource = applicationContext.getResource(metadataReference);\n                resources.put(resource, chain);\n            } else {\n                LOGGER.warn(\"Skipping metadata [{}]; Either the resource cannot be retrieved or its signing key is missing\", metadataReference);\n            }\n        }));\n    }\n\n    @ConditionalOnMissingBean(name = \"chainingSamlMetadataUIMetadataResolverAdapter\")\n    @Bean\n    @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)\n    public MetadataResolverAdapter chainingSamlMetadataUIMetadataResolverAdapter(\n        final CasConfigurationProperties casProperties,\n        final ConfigurableApplicationContext applicationContext,\n        @Qualifier(OpenSamlConfigBean.DEFAULT_BEAN_NAME)\n        final OpenSamlConfigBean openSamlConfigBean) {\n        val staticAdapter = new StaticMetadataResolverAdapter();\n        configureAdapter(staticAdapter, applicationContext, casProperties, openSamlConfigBean);\n        staticAdapter.buildMetadataResolverAggregate();\n\n        val dynaAdapter = new DynamicMetadataResolverAdapter();\n        configureAdapter(dynaAdapter, applicationContext, casProperties, openSamlConfigBean);","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/apereo/cas/blob/e7288fc434b4f4505b8452e1a57e8fb3111bb863/support/cas-server-support-saml-mdui/src/main/java/org/apereo/cas/config/SamlMetadataUIConfiguration.java#L80-L116","documentation":"Final gate in configureResource: a metadata reference is skipped when either it was disqualified earlier (e.g. missing signing key, error 628) or the resource cannot actually be retrieved. CAS warns and excludes it from the MDUI resolver aggregate.","triggerScenarios":"addResource==false from a prior failure, or the metadataReference is not a URL and ResourceUtils.doesResourceExist returns false (missing file, bad path, unreachable non-URL resource) so the metadata resource is not added to the chain.","commonSituations":"MDUI metadata file absent from deployment; wrong resource path in cas.saml-metadata-ui metadata references; previous signing-key failure cascading into this skip; mounted volume not present in container.","solutions":["Check that the metadataReference path/URL is correct and the file exists in the runtime environment.","If the skip follows warning 628, fix the signing key first.","Confirm container volume mounts include the MDUI metadata directory.","Enable debug logging for SamlMetadataUIConfiguration to see which condition failed for the reference."],"exampleFix":"// before\ncas.saml-metadata-ui.metadata[0]=file:/etc/cas/mdui/federation-ui.xml\n// after (file actually deployed)\ncas.saml-metadata-ui.metadata[0]=file:/etc/cas/mdui/federation-ui-metadata.xml","handlingStrategy":"validation","validationCode":"var mdRes = applicationContext.getResource(metadataReference);\nboolean usable = ResourceUtils.isUrl(metadataReference)\n    || (mdRes != null && mdRes.exists() && mdRes.contentLength() > 0);\nif (!usable) {\n    LOGGER.warn(\"Metadata reference unusable: {}\", metadataReference);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Mount MDUI metadata files into containers and verify paths at deploy time.","Resolve any earlier signing-key warnings before re-checking this one.","Log and alert on skipped metadata references during resolver build."],"tags":["metadata","configuration","resource"],"backgroundTag":"resource-not-found","analyzedSha":"e7288fc434b4f4505b8452e1a57e8fb3111bb863","analyzedAt":"2026-09-08T15:39:16.015Z","contentChangedAt":"2026-09-08T15:39:16.015Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}