/** * Checks for user authentication using some SSO implementation * * @param userSession UserSession */ protected void checkSSO(UserSession userSession) { LOG.trace("checkSSO"); try { SSO sso = (SSO) Class.forName(SystemGlobals.getValue(ConfigKeys.SSO_IMPLEMENTATION)).newInstance(); String username = sso.authenticateUser(JForumExecutionContext.getRequest()); if (username == null || username.trim().equals("")) { userSession.makeAnonymous(); } else { SSOUtils utils = new SSOUtils(); if (!utils.userExists(username)) { SessionContext session = JForumExecutionContext.getRequest().getSessionContext(); String email = (String) session.getAttribute(SystemGlobals.getValue(ConfigKeys.SSO_EMAIL_ATTRIBUTE)); String password = (String) session.getAttribute(SystemGlobals.getValue(ConfigKeys.SSO_PASSWORD_ATTRIBUTE)); if (email == null) { email = SystemGlobals.getValue(ConfigKeys.SSO_DEFAULT_EMAIL); } if (password == null) { password = SystemGlobals.getValue(ConfigKeys.SSO_DEFAULT_PASSWORD); } utils.register(password, email); } this.configureUserSession(userSession, utils.getUser()); } } catch (Exception e) { e.printStackTrace(); throw new ForumException("Error while executing SSO actions: " + e); } }