@Override public void logoutBySsoId(List<String> ssoIds) { SamlSession account = getAccount(); for (String ssoId : ssoIds) { if (account != null && account.getSessionIndex().equals(ssoId)) { logoutAccount(); } else if (idMapper != null) { String sessionId = idMapper.getSessionFromSSO(ssoId); idMapper.removeSession(sessionId); } } }
@Override public void logoutByPrincipal(String principal) { SamlSession account = getAccount(); if (account != null && account.getPrincipal().getSamlSubject().equals(principal)) { logoutAccount(); } if (idMapper != null) { Set<String> sessions = idMapper.getUserSessions(principal); if (sessions != null) { List<String> ids = new LinkedList<String>(); ids.addAll(sessions); for (String id : ids) { idMapper.removeSession(id); } } } }
@Override public void saveAccount(SamlSession account) { HttpSession session = request.getSession(true); session.setAttribute(SamlSession.class.getName(), account); if (idMapper != null) idMapper.map( account.getSessionIndex(), account.getPrincipal().getSamlSubject(), session.getId()); }
@Override public void logoutAccount() { HttpSession session = request.getSession(false); if (session == null) return; if (session != null) { if (idMapper != null) idMapper.removeSession(session.getId()); SamlSession samlSession = (SamlSession) session.getAttribute(SamlSession.class.getName()); if (samlSession != null) { session.removeAttribute(SamlSession.class.getName()); } clearSavedRequest(session); } }
@Override public boolean isLoggedIn() { HttpSession session = request.getSession(false); if (session == null) return false; if (session == null) { log.debug("session was null, returning null"); return false; } final SamlSession samlSession = (SamlSession) session.getAttribute(SamlSession.class.getName()); if (samlSession == null) { log.debug("SamlSession was not in session, returning null"); return false; } if (idMapper != null && !idMapper.hasSession(session.getId())) { logoutAccount(); return false; } needRequestRestore = restoreRequest(); return true; }