package org.apereo.cas.ticket.proxy; import com.fasterxml.jackson.annotation.JsonTypeInfo; import org.apereo.cas.authentication.principal.Service; import org.apereo.cas.ticket.TicketGrantingTicket; import org.apereo.cas.ticket.ExpirationPolicy; /** * Interface for a proxy granting ticket. A proxy-granting ticket is an opaque string that is * used by a service to obtain proxy tickets for obtaining access to a back-end service on behalf of a client. * Proxy-granting tickets are obtained from CAS upon validation of a service ticket or a proxy ticket. * * @author Misagh Moayyed * @since 4.2 */ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY) public interface ProxyGrantingTicket extends TicketGrantingTicket { /** The prefix to use when generating an id for a Proxy Granting Ticket. */ String PROXY_GRANTING_TICKET_PREFIX = "PGT"; /** The prefix to use when generating an id for a Proxy Granting Ticket IOU. */ String PROXY_GRANTING_TICKET_IOU_PREFIX = "PGTIOU"; /** * Grant a proxy ticket for a specific service. * * @param id The unique identifier for this ticket. * @param service The service for which we are granting a ticket * @param expirationPolicy the expiration policy. * @param onlyTrackMostRecentSession track the most recent session by keeping the latest service ticket * @return the service ticket granted to a specific service for the * principal of the TicketGrantingTicket */ ProxyTicket grantProxyTicket(String id, Service service, ExpirationPolicy expirationPolicy, boolean onlyTrackMostRecentSession); }