package org.apereo.cas.ticket; import org.apache.commons.lang3.SerializationUtils; import org.apache.cxf.ws.security.tokenstore.SecurityToken; import org.apereo.cas.authentication.Authentication; import org.apereo.cas.util.EncodingUtils; import javax.persistence.Column; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.ManyToOne; import javax.persistence.Table; /** * This is {@link DefaultSecurityTokenTicket}. * * @author Misagh Moayyed * @since 5.1.0 */ @Entity @Table(name = "SECURITYTOKENTICKET") @DiscriminatorColumn(name = "TYPE") @DiscriminatorValue(SecurityTokenTicket.PREFIX) public class DefaultSecurityTokenTicket extends AbstractTicket implements SecurityTokenTicket { private static final long serialVersionUID = 3940671352560102114L; @ManyToOne(targetEntity = TicketGrantingTicketImpl.class) private TicketGrantingTicket ticketGrantingTicket; @Column(name = "SECURITY_TOKEN") private String securityToken; public DefaultSecurityTokenTicket() { } public DefaultSecurityTokenTicket(final String id, final TicketGrantingTicket ticketGrantingTicket, final ExpirationPolicy expirationPolicy, final String securityToken) { super(id, expirationPolicy); this.ticketGrantingTicket = ticketGrantingTicket; this.securityToken = securityToken; } @Override public TicketGrantingTicket getGrantingTicket() { return this.ticketGrantingTicket; } @Override public Authentication getAuthentication() { return getGrantingTicket().getAuthentication(); } @Override public String getPrefix() { return SecurityTokenTicket.PREFIX; } @Override public SecurityToken getSecurityToken() { final byte[] securityTokenBin = EncodingUtils.decodeBase64(this.securityToken); return SerializationUtils.deserialize(securityTokenBin); } }