package org.apereo.cas.ticket; import org.apache.commons.lang3.SerializationUtils; import org.apache.cxf.ws.security.tokenstore.SecurityToken; import org.apereo.cas.util.EncodingUtils; /** * This is {@link DefaultSecurityTokenTicketFactory}. * * @author Misagh Moayyed * @since 5.1.0 */ public class DefaultSecurityTokenTicketFactory implements SecurityTokenTicketFactory { private final ExpirationPolicy expirationPolicy; private final UniqueTicketIdGenerator ticketUniqueTicketIdGenerator; public DefaultSecurityTokenTicketFactory(final UniqueTicketIdGenerator ticketGrantingTicketUniqueTicketIdGenerator, final ExpirationPolicy expirationPolicy) { this.expirationPolicy = expirationPolicy; this.ticketUniqueTicketIdGenerator = ticketGrantingTicketUniqueTicketIdGenerator; } @Override public <T extends TicketFactory> T get(final Class<? extends Ticket> clazz) { return (T) this; } @Override public SecurityTokenTicket create(final TicketGrantingTicket ticket, final SecurityToken securityToken) { final String token = EncodingUtils.encodeBase64(SerializationUtils.serialize(securityToken)); final String id = ticketUniqueTicketIdGenerator.getNewTicketId(SecurityTokenTicket.PREFIX); final SecurityTokenTicket stt = new DefaultSecurityTokenTicket(id, ticket, this.expirationPolicy, token); ticket.getDescendantTickets().add(stt.getId()); return stt; } }