@Override
    protected Map<String, List<Object>> getAttributesForSamlRegisteredService(
        final Map<String, List<Object>> attributes,
        final SamlRegisteredServiceCachingMetadataResolver resolver,
        final SamlRegisteredServiceMetadataAdaptor facade,
        final EntityDescriptor entityDescriptor,
        final RegisteredServiceAttributeReleasePolicyContext context) {
        val releaseAttributes = new HashMap<String, List<Object>>();

        val resolvedSalt = SpringExpressionLanguageValueResolver.getInstance().resolve(this.salt);
        val persistentIdGenerator = new ShibbolethCompatiblePersistentIdGenerator(resolvedSalt);

        val resolvedAttrs = SpringExpressionLanguageValueResolver.getInstance().resolve(this.attribute);
        persistentIdGenerator.setAttribute(resolvedAttrs);

        val principalId = persistentIdGenerator.determinePrincipalIdFromAttributes(context.getPrincipal().getId(), attributes);
        LOGGER.debug("Selected principal id [{}] to generate [{}] for service [{}]",
            principalId, ATTRIBUTE_NAME_EDU_PERSON_TARGETED_ID, context.getService());
        val result = persistentIdGenerator.generate(principalId, context.getService());
        val attrName = this.useUniformResourceName ? ATTRIBUTE_URN_EDU_PERSON_TARGETED_ID : ATTRIBUTE_NAME_EDU_PERSON_TARGETED_ID;
        releaseAttributes.put(attrName, CollectionUtils.wrapList(result));
        LOGGER.debug("Calculated [{}] attribute as [{}]", attrName, result);
        return releaseAttributes;
    }
The attribute urn generated by this policy.
support/cas-server-support-saml-idp-core/src/main/java/org/apereo/cas/support/saml/services/EduPersonTargetedIdAttributeReleasePolicy.java