@Override
    @JsonIgnore
    public Map<String, Set<String>> getRequiredAttributes() {
        val results = new LinkedHashMap<String, List<Object>>();
        val merger = CoreAuthenticationUtils.getAttributeMerger(PrincipalAttributesCoreProperties.MergingStrategyTypes.MULTIVALUED);
        strategies.forEach(strategy -> {
            val requiredAttributes = strategy.getRequiredAttributes()
                .entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey, mapper -> new ArrayList<>(mapper.getValue())));
            merger.mergeAttributes(results, (Map) requiredAttributes);
        });
        return (Map) results
            .entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getKey, mapper -> new LinkedHashSet<>(mapper.getValue())));
    }
Add strategies.

@param policies the policies
core/cas-server-core-services-api/src/main/java/org/apereo/cas/services/ChainingRegisteredServiceAccessStrategy.java