protected CasJsonServiceResponseAuthenticationSuccess createAuthenticationSuccess(final Map<String, Object> model) {
        val success = new CasJsonServiceResponseAuthenticationSuccess();
        val modelAttributes = getModelAttributes(model);
        val processedAttributes = modelAttributes
            .entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getKey, entry -> {
                val attributeDefinition = attributeDefinitionStore.locateAttributeDefinition(entry.getKey())
                    .or(() -> attributeDefinitionStore.locateAttributeDefinitionByName(entry.getKey()));
                return attributeDefinition.map(definition -> definition.toAttributeValue(entry.getValue())).orElseGet(entry::getValue);
            }));

        success.setAttributes(processedAttributes);
        val principal = getPrincipal(model);
        success.setUser(principal.getId());
        success.setProxyGrantingTicket(getProxyGrantingTicketIou(model));
        success.setProxies((List) model.get(CasViewConstants.MODEL_ATTRIBUTE_NAME_PROXIES));
        return success;
    }
Attribute name in the final model representing the service response.
support/cas-server-support-validation-core/src/main/java/org/apereo/cas/web/view/json/Cas30JsonResponseView.java