com.rt.storage.auth.oauth2.IdToken Maven / Gradle / Ivy
package com.rt.storage.auth.oauth2;
import com.rt.storage.api.client.json.JsonFactory;
import com.rt.storage.api.client.json.webtoken.JsonWebSignature;
import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/** Represents a temporary IdToken and its JsonWebSignature object */
@Beta
public class IdToken extends AccessToken implements Serializable {
private static final long serialVersionUID = -8514239465808977353L;
private transient JsonWebSignature jsonWebSignature;
/**
* @param tokenValue String representation of the ID token.
* @param jsonWebSignature JsonWebSignature as object
*/
private IdToken(String tokenValue, JsonWebSignature jsonWebSignature) {
super(tokenValue, new Date(jsonWebSignature.getPayload().getExpirationTimeSeconds() * 1000));
this.jsonWebSignature = jsonWebSignature;
}
/**
* Creates an IdToken given the encoded Json Web Signature.
*
* @param tokenValue String representation of the ID token.
* @throws IOException if JWT token parsing fails
* @return returns com.rt.storage.auth.oauth2.IdToken
*/
public static IdToken create(String tokenValue) throws IOException {
return create(tokenValue, OAuth2Utils.JSON_FACTORY);
}
/**
* Creates an IdToken given the encoded Json Web Signature and JSON Factory
*
* @param jsonFactory JsonFactory to use for parsing the provided token.
* @param tokenValue String representation of the ID token.
* @throws IOException if JWT token parsing fails
* @return returns com.rt.storage.auth.oauth2.IdToken
*/
public static IdToken create(String tokenValue, JsonFactory jsonFactory) throws IOException {
return new IdToken(tokenValue, JsonWebSignature.parse(jsonFactory, tokenValue));
}
/**
* The JsonWebSignature as object
*
* @return returns com.rt.storage.api.client.json.webtoken.JsonWebSignature
*/
JsonWebSignature getJsonWebSignature() {
return jsonWebSignature;
}
@Override
public int hashCode() {
return Objects.hash(
super.getTokenValue(), jsonWebSignature.getHeader(), jsonWebSignature.getPayload());
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("tokenValue", super.getTokenValue())
.add("JsonWebSignature", jsonWebSignature)
.toString();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof IdToken)) {
return false;
}
IdToken other = (IdToken) obj;
return Objects.equals(super.getTokenValue(), other.getTokenValue())
&& Objects.equals(this.jsonWebSignature.getHeader(), other.jsonWebSignature.getHeader())
&& Objects.equals(this.jsonWebSignature.getPayload(), other.jsonWebSignature.getPayload());
}
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.writeObject(this.getTokenValue());
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
String signature = (String) ois.readObject();
this.jsonWebSignature = JsonWebSignature.parse(OAuth2Utils.JSON_FACTORY, signature);
}
}