@Override public <T extends TicketGrantingTicket> T create(final Authentication authentication) { final TicketGrantingTicket ticketGrantingTicket = new TicketGrantingTicketImpl( this.ticketGrantingTicketUniqueTicketIdGenerator.getNewTicketId(TicketGrantingTicket.PREFIX), authentication, ticketGrantingTicketExpirationPolicy); return (T) ticketGrantingTicket; }
@Override public <T extends ProxyGrantingTicket> T create(final ServiceTicket serviceTicket, final Authentication authentication) { final String pgtId = this.ticketGrantingTicketUniqueTicketIdGenerator.getNewTicketId( ProxyGrantingTicket.PROXY_GRANTING_TICKET_PREFIX); final ProxyGrantingTicket proxyGrantingTicket = serviceTicket.grantProxyGrantingTicket(pgtId, authentication, this.ticketGrantingTicketExpirationPolicy); return (T) proxyGrantingTicket; }
@Override public <T extends Ticket> T create(final ProxyGrantingTicket proxyGrantingTicket, final Service service) { final String uniqueTicketIdGenKey = service.getClass().getName(); logger.debug("Looking up service ticket id generator for [{}]", uniqueTicketIdGenKey); UniqueTicketIdGenerator serviceTicketUniqueTicketIdGenerator = this.uniqueTicketIdGeneratorsForService.get(uniqueTicketIdGenKey); if (serviceTicketUniqueTicketIdGenerator == null) { serviceTicketUniqueTicketIdGenerator = this.defaultServiceTicketIdGenerator; logger.debug("Service ticket id generator not found for [{}]. Using the default generator...", uniqueTicketIdGenKey); } final String ticketId = serviceTicketUniqueTicketIdGenerator.getNewTicketId(ProxyTicket.PROXY_TICKET_PREFIX); final ProxyTicket serviceTicket = proxyGrantingTicket.grantProxyTicket( ticketId, service, this.serviceTicketExpirationPolicy, this.onlyTrackMostRecentSession); return (T) serviceTicket; }
@Override public <T extends Ticket> T create(final TicketGrantingTicket ticketGrantingTicket, final Service service, final boolean credentialsProvided) { final String uniqueTicketIdGenKey = service.getClass().getName(); UniqueTicketIdGenerator serviceTicketUniqueTicketIdGenerator = null; if (this.uniqueTicketIdGeneratorsForService != null && !uniqueTicketIdGeneratorsForService.isEmpty()) { logger.debug("Looking up service ticket id generator for [{}]", uniqueTicketIdGenKey); serviceTicketUniqueTicketIdGenerator = this.uniqueTicketIdGeneratorsForService.get(uniqueTicketIdGenKey); } if (serviceTicketUniqueTicketIdGenerator == null) { serviceTicketUniqueTicketIdGenerator = this.defaultServiceTicketIdGenerator; logger.debug("Service ticket id generator not found for [{}]. Using the default generator...", uniqueTicketIdGenKey); } final String ticketId = serviceTicketUniqueTicketIdGenerator.getNewTicketId(ServiceTicket.PREFIX); final ServiceTicket serviceTicket = ticketGrantingTicket.grantServiceTicket( ticketId, service, this.serviceTicketExpirationPolicy, credentialsProvided, this.onlyTrackMostRecentSession); return (T) serviceTicket; }
@Override public String handle(final Credential credential, final TicketGrantingTicket proxyGrantingTicketId) { final HttpBasedServiceCredential serviceCredentials = (HttpBasedServiceCredential) credential; final String proxyIou = this.uniqueTicketIdGenerator.getNewTicketId(ProxyGrantingTicket.PROXY_GRANTING_TICKET_IOU_PREFIX); final URL callbackUrl = serviceCredentials.getCallbackUrl(); final String serviceCredentialsAsString = callbackUrl.toExternalForm(); final int bufferLength = serviceCredentialsAsString.length() + proxyIou.length() + proxyGrantingTicketId.getId().length() + BUFFER_LENGTH_ADDITIONAL_CHARGE; final StringBuilder stringBuffer = new StringBuilder(bufferLength); stringBuffer.append(serviceCredentialsAsString); if (callbackUrl.getQuery() != null) { stringBuffer.append('&'); } else { stringBuffer.append('?'); } stringBuffer.append(PARAMETER_PROXY_GRANTING_TICKET_IOU); stringBuffer.append('='); stringBuffer.append(proxyIou); stringBuffer.append('&'); stringBuffer.append(PARAMETER_PROXY_GRANTING_TICKET_ID); stringBuffer.append('='); stringBuffer.append(proxyGrantingTicketId); if (this.httpClient.isValidEndPoint(stringBuffer.toString())) { logger.debug("Sent ProxyIou of {} for service: {}", proxyIou, serviceCredentials); return proxyIou; } logger.debug("Failed to send ProxyIou of {} for service: {}", proxyIou, serviceCredentials); return null; }