@Override
    public ProxyTicket grantProxyTicket(final String id,
                                        final Service service,
                                        final ExpirationPolicy expirationPolicy,
                                        final TicketTrackingPolicy trackingPolicy) {
        val proxyTicket = new ProxyTicketImpl(id, this, service, false, expirationPolicy);
        proxyTicket.setAuthentication(getAuthentication());
        proxyTicket.setTenantId(service.getTenant());
        trackingPolicy.trackTicket(this, proxyTicket);
        return proxyTicket;
    }
Concrete implementation of a proxy granting ticket (PGT). A PGT is
used by a service to obtain proxy tickets for obtaining access to a back-end
service on behalf of a client. It is analogous to a ticket-granting ticket
but only for proxying purposes. Proxy tickets will be issued off of
a given proxy granting ticket.
<p>
NOTE: A PGT shares the same implementation as a {@link TicketGrantingTicket}.
The intention of this implementation at this point is make explicit and visible
the use and declaration of a PGT per the CAS protocol.

@author Misagh Moayyed
@since 4.1
core/cas-server-core-tickets-api/src/main/java/org/apereo/cas/ticket/ProxyGrantingTicketImpl.java