public LogoutRequestModel parseLogoutRequest(HttpServletRequest request) throws SamlValidationException, SamlParseException, SamlSessionException, DienstencatalogusException {

        final LogoutRequestModel logoutRequestModel = new LogoutRequestModel();

        try {
            final BaseHttpServletRequestXMLMessageDecoder decoder = decodeRequest(request);
            var logoutRequest = (LogoutRequest) decoder.getMessageContext().getMessage();

            final SAMLBindingContext bindingContext = decoder.getMessageContext().getSubcontext(SAMLBindingContext.class);
            logoutRequestModel.setLogoutRequest(logoutRequest);
            logoutRequestModel.setRequest(request);

            validateRequest(logoutRequestModel);

            var id = logoutRequest.getNameID() != null ? logoutRequest.getNameID().getValue() : logoutRequest.getSessionIndexes().get(0).getValue();

            var samlSession = samlSessionRepository.findById(id)
                    .orElseThrow(() -> new SamlSessionException("LogoutRequest no saml session found for nameID: " + id));

            logoutRequestModel.setConnectionEntityId(samlSession.getConnectionEntityId());
            logoutRequestModel.setServiceEntityId(samlSession.getServiceEntityId());
            logoutRequestModel.setServiceUuid(samlSession.getServiceUuid());
            logoutRequestModel.setRelayState(bindingContext.getRelayState());
            logoutRequestModel.setEntranceSession(samlSession.getProtocolType().equals(ProtocolType.SAML_COMBICONNECT));

            dcMetadataService.resolveDcMetadata(logoutRequestModel);
            if (!logoutRequestModel.getConnectionEntityId().equals(logoutRequestModel.getLogoutRequest().getIssuer().getValue())) {
                throw new SamlValidationException("Issuer not equal to connectorEntityId");
            }

            verifySignature(logoutRequestModel, logoutRequestModel.getLogoutRequest().getSignature());

            logout(samlSession);

            if (logger.isDebugEnabled())
                OpenSAMLUtils.logSAMLObject((LogoutRequest) decoder.getMessageContext().getMessage());

        } catch (MessageDecodingException e) {
            throw new SamlParseException("Authentication deflate decode exception", e);
        } catch (ComponentInitializationException e) {
            throw new SamlParseException("Authentication deflate initialization exception", e);
        }

        return logoutRequestModel;
    }
@Test
    public void parseLogoutRequestNoSignature() {
        httpRequestMock.setParameter("SAMLRequest", "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS");

        Exception exception = assertThrows(SamlValidationException.class,
                () -> logoutService.parseLogoutRequest(httpRequestMock));
        assertEquals("LogoutRequest validation error", exception.getMessage());
    }