@Override
    public AuthorizationResult evaluate(final AuthorizableResource resource, final AuthorizationRequest request) {
        val principalAttributes = request.getPrincipal().getAttributes();
        return getAttributes()
            .entrySet()
            .parallelStream()
            .filter(entry -> principalAttributes.containsKey(entry.getKey()))
            .filter(entry -> {
                val attributeValues = CollectionUtils.toCollection(principalAttributes.get(entry.getKey()));
                return entry.getValue().parallelStream().anyMatch(value -> RegexUtils.findFirst(value, attributeValues).isPresent());
            })
            .findAny()
            .map(entry -> AuthorizationResult.granted("OK"))
            .orElseGet(() -> AuthorizationResult.denied("Denied"));
    }
Collection of required attributes
for this service to proceed.
support/cas-server-support-heimdall/src/main/java/org/apereo/cas/heimdall/authorizer/resource/policy/RequiredAttributesAuthorizationPolicy.java