package org.ovirt.engine.core.sso.utils; import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.Stack; import java.util.TreeSet; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.extensions.ExtMap; public class SsoSession implements Serializable { private static final long serialVersionUID = 6904401523209679500L; public enum Status { unauthenticated, inprogress, authenticated} private Status status = Status.unauthenticated; private String clientId; private boolean active; private String appUrl; private String authorizationCode; private String accessToken; private long validTo; private String userId; private String scope; private List<String> scopeAsList; private String password; private String redirectUri; private String profile; private long tokenLastAccess; private HttpSession httpSession; private ExtMap authRecord; private ExtMap principalRecord; private String loginMessage; private String changePasswdMessage; private String engineUrl; private String state; private boolean reauthenticate; private Credentials tempCredentials; private Credentials changePasswdCredentials; private Credentials autheticatedCredentials; private Set<String> associateClientIds = new TreeSet<>(); private Stack<InteractiveAuth> authStack; private String sessionIdToken; public SsoSession() { this(null); } public SsoSession(HttpSession httpSession) { this.httpSession = httpSession; cleanup(); } public String getAuthorizationCode() { return authorizationCode; } public void setAuthorizationCode(String authorizationCode) { this.authorizationCode = authorizationCode; } public long getTokenLastAccess() { return tokenLastAccess; } public void touch() { this.tokenLastAccess = System.nanoTime(); } public HttpSession getHttpSession() { return httpSession; } public void setHttpSession(HttpSession httpSession) { this.httpSession = httpSession; } public String getClientId() { return clientId; } public void setClientId(String clientId) { this.clientId = clientId; if (StringUtils.isNotEmpty(clientId)) { associateClientIds.add(clientId); } } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public String getAccessToken() { return accessToken; } public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public String getAppUrl() { return appUrl; } public void setAppUrl(String appUrl) { this.appUrl = appUrl; } public Long getValidTo() { return validTo; } public void setValidTo(long validTo) { this.validTo = validTo; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getScope() { return scope; } public void setScope(String scope) { if (scopeAsList == null && !SsoUtils.strippedScopeAsList(SsoUtils.scopeAsList(scope)).isEmpty()) { this.scope = scope; this.scopeAsList = SsoUtils.scopeAsList(scope); } } public List<String> getScopeAsList() { return scopeAsList; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRedirectUri() { return redirectUri; } public void setRedirectUri(String redirectUri) { this.redirectUri = redirectUri; } public String getProfile() { return profile; } public void setProfile(String profile) { this.profile = profile; } public Set<String> getAssociatedClientIds() { return associateClientIds; } public ExtMap getAuthRecord() { return authRecord; } public void setAuthRecord(ExtMap authRecord) { this.authRecord = authRecord; } public ExtMap getPrincipalRecord() { return principalRecord; } public void setPrincipalRecord(ExtMap principalRecord) { this.principalRecord = principalRecord; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } public String getLoginMessage() { return loginMessage; } public void setLoginMessage(String loginMessage) { this.loginMessage = loginMessage; } public String getChangePasswdMessage() { return changePasswdMessage; } public void setChangePasswdMessage(String changePasswdMessage) { this.changePasswdMessage = changePasswdMessage; } public boolean isReauthenticate() { return reauthenticate; } public void setReauthenticate(boolean reauthenticate) { this.reauthenticate = reauthenticate; } public Credentials getTempCredentials() { return tempCredentials; } public void setTempCredentials(Credentials tempCredentials) { this.tempCredentials = tempCredentials; } public Credentials getChangePasswdCredentials() { return changePasswdCredentials; } public void setChangePasswdCredentials(Credentials changePasswdCredentials) { this.changePasswdCredentials = changePasswdCredentials; } public Credentials getAutheticatedCredentials() { return autheticatedCredentials; } public void setAutheticatedCredentials(Credentials autheticatedCredentials) { this.autheticatedCredentials = autheticatedCredentials; } public Stack<InteractiveAuth> getAuthStack() { return authStack; } public void setAuthStack(Stack<InteractiveAuth> authStack) { this.authStack = authStack; } public String getEngineUrl() { return engineUrl; } public void setEngineUrl(String engineUrl) { this.engineUrl = engineUrl; } public String getSessionIdToken() { return sessionIdToken; } public void setSessionIdToken(String sessionIdToken) { this.sessionIdToken = sessionIdToken; } public String getState() { return state; } public void setState(String state) { this.state = state; } public void cleanup() { redirectUri = null; authStack = null; state = null; } }