@Override
    public Map<String, List<Object>> getAttributesInternal(final RegisteredServiceAttributeReleasePolicyContext context,
                                                           final Map<String, List<Object>> attrs) {
        val resolvedAttributes = new TreeMap<String, List<Object>>(String.CASE_INSENSITIVE_ORDER);
        resolvedAttributes.putAll(attrs);
        val attributesToRelease = new HashMap<String, List<Object>>(resolvedAttributes.size());

        getAllowedAttributes()
            .entrySet()
            .stream()
            .filter(entry -> WSFederationClaims.contains(entry.getKey().toUpperCase(Locale.ENGLISH)))
            .forEach(entry -> {
                val claimName = entry.getKey();
                val attributeValue = resolvedAttributes.get(entry.getValue());
                val claim = WSFederationClaims.valueOf(claimName.toUpperCase(Locale.ENGLISH));
                if (resolvedAttributes.containsKey(claim.getUri())) {
                    attributesToRelease.put(claim.getUri(), resolvedAttributes.get(claim.getUri()));
                } else {
                    LOGGER.trace("Evaluating claim [{}] mapped to attribute value [{}]", claim.getUri(), attributeValue);
                    mapSingleAttributeDefinition(claim.getUri(), entry.getValue(),
                        attributeValue, resolvedAttributes, attributesToRelease);
                }
            });
        return attributesToRelease;
    }
This is {@link WSFederationClaimsReleasePolicy}.

@author Misagh Moayyed
@since 5.1.0
support/cas-server-support-ws-idp-api/src/main/java/org/apereo/cas/ws/idp/services/WSFederationClaimsReleasePolicy.java