package org.dcache.auth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
import java.util.Objects;
public class StaticOpenIdCredential implements OpenIdCredential, Serializable
{
private static final long serialVersionUID = 1L;
private static final Logger LOG =
LoggerFactory.getLogger(StaticOpenIdCredential.class);
private final String accessToken;
private final long expiresAt;
private final String issuedTokenType;
private final String refreshToken;
private final String scope;
private final String tokenType;
// Use to refresh Access Token
private final OpenIdClientSecret clientCredential;
private final String openidProvider;
private StaticOpenIdCredential(Builder builder) {
this.accessToken = builder._accessToken;
this.expiresAt = builder._expiresAt;
this.issuedTokenType = builder._issuedTokenType;
this.refreshToken = builder._refreshToken;
this.scope = builder._scope;
this.tokenType = builder._tokenType;
this.clientCredential = builder._clientCredential;
this.openidProvider = builder._urlOpenidProvider;
}
@Override
public String getAccessToken() {
return accessToken;
}
@Override
public long getExpiresAt() {
return expiresAt;
}
@Override
public String getIssuedTokenType() {
return issuedTokenType;
}
@Override
public String getRefreshToken() {
return refreshToken;
}
@Override
public String getScope() {
return scope;
}
@Override
public String getTokenType() {
return tokenType;
}
@Override
public OpenIdClientSecret getClientCredential() {
return clientCredential;
}
@Override
public String getOpenidProvider() {
return openidProvider;
}
@Override
public String getBearerToken() {
return getAccessToken();
}
@Override
public boolean equals(Object o)
{
if (this == o)
return true;
if (!(o instanceof StaticOpenIdCredential))
return false;
StaticOpenIdCredential that = (StaticOpenIdCredential) o;
if (expiresAt != that.expiresAt)
return false;
if (!accessToken.equals(that.accessToken))
return false;
if (!issuedTokenType.equals(that.issuedTokenType))
return false;
if (!refreshToken.equals(that.refreshToken))
return false;
if (!scope.equals(that.scope))
return false;
if (!tokenType.equals(that.tokenType))
return false;
if (!clientCredential.equals(that.clientCredential))
return false;
return openidProvider.equals(that.openidProvider);
}
@Override
public int hashCode()
{
return Objects.hash(accessToken,
expiresAt,
issuedTokenType,
refreshToken,
scope,
tokenType,
clientCredential, openidProvider);
}
public static Builder copyOf(OpenIdCredential credential)
{
return new Builder().accessToken(credential.getAccessToken())
.expiry(credential.getExpiresAt())
.refreshToken(credential.getRefreshToken())
.issuedTokenType(credential.getIssuedTokenType())
.scope(credential.getScope())
.tokenType(credential.getTokenType())
.clientCredential(credential.getClientCredential())
.provider(credential.getOpenidProvider());
}
public static class Builder
{
private String _accessToken = null;
private long _expiresAt = 0L;
private String _issuedTokenType = null;
private String _refreshToken = null;
private String _scope = null;
private String _tokenType = null;
private OpenIdClientSecret _clientCredential = null;
private String _urlOpenidProvider = null;
public Builder()
{
}
public Builder accessToken(String accessToken)
{
this._accessToken = accessToken;
return this;
}
public Builder expiry(long expiresIn)
{
this._expiresAt = System.currentTimeMillis() + expiresIn*1000L;
return this;
}
public Builder refreshToken(String refreshToken)
{
this._refreshToken = refreshToken;
return this;
}
public Builder issuedTokenType(String issuedTokenType)
{
this._issuedTokenType = issuedTokenType;
return this;
}
public Builder scope(String scope)
{
this._scope = scope;
return this;
}
public Builder tokenType(String tokenType)
{
this._tokenType = tokenType;
return this;
}
public Builder clientCredential(OpenIdClientSecret clientCredential)
{
this._clientCredential = clientCredential;
return this;
}
public Builder provider(String url)
{
this._urlOpenidProvider = url;
return this;
}
public StaticOpenIdCredential build()
{
return new StaticOpenIdCredential(this);
}
}
}