@Override
    public boolean isSatisfiedBy(final Assertion assertion, final HttpServletRequest request) {
        val tenantSupported = tenantExtractor.extract(request)
            .stream()
            .filter(tenant -> Objects.nonNull(tenant.getAuthenticationPolicy().getAuthenticationProtocolPolicy()))
            .map(tenant -> {
                val supportedProtocols = tenant.getAuthenticationPolicy().getAuthenticationProtocolPolicy().getSupportedProtocols()
                    .stream()
                    .map(version -> CasProtocolVersions.valueOf(version.toUpperCase(Locale.ROOT)))
                    .collect(Collectors.toSet());
                return supportedProtocols.isEmpty() || supportedProtocols.containsAll(supportedVersions);
            })
            .findAny()
            .orElse(Boolean.TRUE);

        val registeredService = assertion.getRegisteredService();
        if (tenantSupported && registeredService instanceof final CasModelRegisteredService casService) {
            val supportedProtocols = casService.getSupportedProtocols();
            return supportedProtocols.isEmpty() || supportedProtocols.containsAll(supportedVersions);
        }
        return tenantSupported;
    }
This is {@link CasProtocolVersionValidationSpecification}.

@author Misagh Moayyed
@since 6.6.0
core/cas-server-core-validation-api/src/main/java/org/apereo/cas/validation/CasProtocolVersionValidationSpecification.java