private Optional<ErrorResponse> validateAccess(DiscFilterRequest request) { try { NodePrincipal hostIdentity = (NodePrincipal) request.getUserPrincipal(); if (hostIdentity == null) return Optional.of(ErrorResponse.internalServerError(createErrorMessage(request, "Principal is missing. NodeIdentifierFilter has not been applied."))); if (!authorizer.test(hostIdentity, request.getUri())) return Optional.of(ErrorResponse.forbidden(createErrorMessage(request, "Invalid credentials: " + hostIdentity.toString()))); request.setUserPrincipal(hostIdentity); return Optional.empty(); } catch (NodeIdentifier.NodeIdentifierException e) { return Optional.of(ErrorResponse.forbidden(createErrorMessage(request, "Invalid credentials: " + e.getMessage()))); } }