@Override
    public boolean supports(final Service service) {
        val casPattern = "^".concat(idpServerPrefix).concat(".*");
        val matches = service != null && service.getId().matches(casPattern);
        LOGGER.trace("Does service id [{}] match against [{}]: [{}]",
            service, idpServerPrefix, BooleanUtils.toStringYesNo(matches));
        val supported = matches && getEntityIdAsParameter(service).isPresent();
        LOGGER.trace("Is request from [{}] supported by [{}]: [{}]",
            service, getClass().getSimpleName(), BooleanUtils.toStringYesNo(supported));
        return supported;
    }
Method attempts to resolve the service from the entityId parameter.  If present, an attempt is made
to find a service corresponding to the entityId in the Service Registry.  If a service is not resolved from
a passed entity id, the service= parameter of the request will be returned instead.  This is usually the
callback url to the external Shibboleth IdP.

@param service the provided service by the caller
@return - the resolved service.
support/cas-server-support-shibboleth/src/main/java/org/apereo/cas/support/saml/ShibbolethIdPEntityIdAuthenticationServiceSelectionStrategy.java