package org.jboss.resteasy.jwt; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonProperty; import java.io.Serializable; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class JsonWebToken implements Serializable { @JsonProperty("jti") protected String id; @JsonProperty("exp") protected long expiration; @JsonProperty("nbf") protected long notBefore; @JsonProperty("iat") protected long issuedAt; @JsonProperty("iss") protected String issuer; @JsonProperty("aud") protected String audience; @JsonProperty("prn") protected String principal; @JsonProperty("typ") protected String type; public String getId() { return id; } public JsonWebToken id(String id) { this.id = id; return this; } public long getExpiration() { return expiration; } public JsonWebToken expiration(long expiration) { this.expiration = expiration; return this; } @JsonIgnore public boolean isExpired() { long time = System.currentTimeMillis() / 1000; return time > expiration; } public long getNotBefore() { return notBefore; } public JsonWebToken notBefore(long notBefore) { this.notBefore = notBefore; return this; } @JsonIgnore public boolean isNotBefore() { return (System.currentTimeMillis() / 1000) >= notBefore; } /** * Tests that the token is not expired and is not-before. * * @return */ @JsonIgnore public boolean isActive() { return (!isExpired() || expiration == 0) && (isNotBefore() || notBefore == 0); } public long getIssuedAt() { return issuedAt; } /** * Set issuedAt to the current time */ @JsonIgnore public JsonWebToken issuedNow() { issuedAt = System.currentTimeMillis() / 1000; return this; } public JsonWebToken issuedAt(long issuedAt) { this.issuedAt = issuedAt; return this; } public String getIssuer() { return issuer; } public JsonWebToken issuer(String issuer) { this.issuer = issuer; return this; } public String getAudience() { return audience; } public JsonWebToken audience(String audience) { this.audience = audience; return this; } public String getPrincipal() { return principal; } public JsonWebToken principal(String principal) { this.principal = principal; return this; } public String getType() { return type; } public JsonWebToken type(String type) { this.type = type; return this; } }