protected Ticket handleProxyGrantingTicketDelivery(final String serviceTicketId, final Credential credential) throws Throwable {
        val serviceTicket = serviceValidateConfigurationContext.getTicketRegistry().getTicket(serviceTicketId, ServiceTicket.class);
        val authenticationResult = serviceValidateConfigurationContext.getAuthenticationSystemSupport()
            .finalizeAuthenticationTransaction(serviceTicket.getService(), credential);
        val proxyGrantingTicket = serviceValidateConfigurationContext.getCentralAuthenticationService()
            .createProxyGrantingTicket(serviceTicketId, authenticationResult);
        LOGGER.debug("Generated proxy-granting ticket [{}] off of service ticket [{}] and credential [{}]",
            proxyGrantingTicket.getId(), serviceTicketId, credential);
        return proxyGrantingTicket;
    }
Process the /validate , /serviceValidate , and /proxyValidate URL requests.
<p>
Obtain the Service Ticket and Service information and present them to the CAS
validation services. Receive back an Assertion containing the user Principal
and (possibly) a chain of Proxy Principals. Store the Assertion in the Model
and chain to a View to generate the appropriate response (CAS 1, CAS 2 XML,
SAML, ...).

@author Scott Battaglia
@author Misagh Moayyed
@since 3.0.0
support/cas-server-support-validation-core/src/main/java/org/apereo/cas/web/AbstractServiceValidateController.java