private AuthenticatorFilter createFilter(final ConfigState configState) {
        final List<AuthenticatorFilter> filters = new ArrayList<>();

        // We want to do this in a consistent order and to prefer say token over cert
        if (configState.isEnabled(AuthenticationType.DATA_FEED_KEY)) {
            filters.add(dataFeedKeyServiceProvider.get());
        }

        if (configState.isEnabled(AuthenticationType.TOKEN)) {
            filters.add(oidcTokenAuthenticatorProvider.get());
        }

        if (configState.isEnabled(AuthenticationType.CERTIFICATE)) {
            filters.add(certificateAuthenticatorProvider.get());
        }

        // If auth is not required then add a fallback filter to provide an UnauthenticatedUserIdentity
        // rather than returning an empty optional
        if (!configState.isAuthenticationRequired) {
            filters.add(allowUnauthenticatedAuthenticatorProvider.get());
        }

        return AuthenticatorFilter.wrap(filters);
    }
Create a combined filter that takes into account the currently configured
auth mechanisms

@param configState
@return
stroom-receive/stroom-receive-common/src/main/java/stroom/receive/common/RequestAuthenticatorImpl.java