/* * Copyright 2012 E.J.I.E., S.A. * * Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la «Licencia»); * Solo podrá usarse esta obra si se respeta la Licencia. * Puede obtenerse una copia de la Licencia en * * http://ec.europa.eu/idabc/eupl.html * * Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, * el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL», * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. * Véase la Licencia en el idioma concreto que rige los permisos y limitaciones * que establece la Licencia. */ package com.ejie.x38.security; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; import java.util.concurrent.TimeUnit; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.springframework.beans.factory.UnsatisfiedDependencyException; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.w3c.dom.Document; import com.ejie.x38.log.LogConstants; import com.ejie.x38.util.StaticsContainer; import com.ejie.x38.util.ThreadStorageManager; import n38a.exe.N38APISesion; import n38c.exe.N38API; /** * * @author UDA * */ public class PerimetralSecurityWrapperN38Impl implements PerimetralSecurityWrapper { private static final Logger logger = LoggerFactory .getLogger(PerimetralSecurityWrapperN38Impl.class); private Long xlnetCachingPeriod = new Long(0); private String xlnetsDomain = null; private boolean destroySessionSecuritySystem = false; private String userChangeUrl = null; private ExcludeFilter excludeFilter = null; private UdaCustomJdbcDaoImpl alternativeStorageUserCredentials = null; private boolean useXlnetProfiles = false; private HashMap<String, String> anonymousProfile = new HashMap<String, String>(); private AlternativeOriginCredentialsApp alternativeOriginCredentialsApp = null; private String specificCredentialsName = null; private Object specificCredentials = null; public PerimetralSecurityWrapperN38Impl() { this.anonymousProfile.put("position", "udaAnonymousPosition"); this.anonymousProfile.put("userProfiles", "udaAnonymousProfile"); } public synchronized String validateSession(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws SecurityException { String udaXLNetsSessionId = getXlnetsUserId(httpRequest); // Getting Authentication credentials Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Credentials credentials = null; // Setpoint of the User Session. if the session is not created, it will // proceed to create it HttpSession httpSession = httpRequest.getSession(true); if (authentication != null) { credentials = (Credentials) authentication.getCredentials(); } if (credentials != null) { if (udaXLNetsSessionId != null) { if (excludeFilter != null && (!excludeFilter.accept(httpRequest, httpResponse))) { springSecurityContextClean(httpSession); return excludeFilter.getAccessDeniedUrl(); // If the sessionId changed, disable XLNET caching } else if (credentials.getUdaValidateSessionId().compareTo(udaXLNetsSessionId.toString()) != 0) { logger.info("XLNet's caching of session " + httpSession.getId() + " expired, because the XLNets user has changed"); authenticationLogContextClean(); // redirect, if is necesary if (userChangeUrl != null) { udaXLNetsSessionId = null; springSecurityContextClean(httpSession); return userChangeUrl; } // Validate the Object of XLnets if (!(isN38ApiValid(httpRequest, httpResponse))) { udaXLNetsSessionId = null; springSecurityContextClean(httpSession); return "false"; } // springSecurityContextClean(httpSession); loadReloadData(httpRequest, ThreadStorageManager.getCurrentThreadId()); httpSession.setAttribute("userChange", "true"); // If the last XLNET session refresh was performed more than // X minutes ago, disable caching } else if (httpSession != null && httpSession.getAttribute("udaTimeStamp") != null) { if (reloadData(httpRequest)) { logger.info("XLNet's caching of session " + httpSession.getId() + " expired, after, at least, " + xlnetCachingPeriod + " Seconds"); // Validate the Object of XLnets if (isN38ApiValid(httpRequest, httpResponse)) { loadReloadData(httpRequest, ThreadStorageManager.getCurrentThreadId()); } else { authenticationLogContextClean(); udaXLNetsSessionId = null; springSecurityContextClean(httpSession); return "false"; } } } return "true"; } else { // There isn't a correct session of XLNET logger.info("There isn't a correct session of XLNET"); logout(httpRequest, httpResponse); springSecurityContextClean(httpSession); udaXLNetsSessionId = null; return "false"; } } else { logger.info("authentication.getCredentials() null"); // Validate the Object of XLnets if (udaXLNetsSessionId != null && isN38ApiValid(httpRequest, httpResponse)) { // The entry is accepting by the security system udaXLNetsSessionId = null; return "true"; } else { // The entry isn't accepting by the security system udaXLNetsSessionId = null; return "false"; } } } /* Methods to recovery the credentials data */ public String getUserConnectedUserName(HttpServletRequest httpRequest) { String userName = null; String xlnetUserId = getXlnetsUserId(httpRequest); HttpSession httpSession = httpRequest.getSession(false); Credentials credentials = null; Authentication authentication = null; // Getting Authentication credentials authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { credentials = (Credentials) authentication.getCredentials(); } if (httpSession != null) { userName = (String) httpSession.getAttribute("userName"); if (!(userName == null && credentials == null)) { if (userName == null) { httpSession.removeAttribute("fullName"); httpSession.removeAttribute("destroySessionSecuritySystem"); userName = credentials.getUserName(); } else { httpSession.removeAttribute("userName"); } } else { userName = loadXlnetsCredentialInfo(httpRequest, xlnetUserId); } } else { userName = loadXlnetsCredentialInfo(httpRequest, xlnetUserId); } logger.trace("Connected User's Name is: " + userName); return userName; } public HashMap<String, String> getUserDataInfo(HttpServletRequest httpRequest, boolean isCertificate) { HttpSession httpSession = httpRequest.getSession(false); String fullName = (String) httpSession.getAttribute("fullName"); // Returning UserDataInfo HashMap<String, String> userData = new HashMap<String, String>(); HashMap<String, String> userInfo = null; N38API n38Api; Document xmlSesion; if (isCertificate) { n38Api = XlnetCore.getN38API(httpRequest); xmlSesion = XlnetCore.getN38ItemSesion(n38Api); userData = XlnetCore.getN38SubjectCert(xmlSesion); } if (fullName != null) { userData.put("fullName", fullName); userData.put("name", (String) httpSession.getAttribute("name")); userData.put("surname", (String) httpSession.getAttribute("surname")); httpSession.removeAttribute("name"); httpSession.removeAttribute("surname"); } else { n38Api = XlnetCore.getN38API(httpRequest); if (!(XlnetCore.getParameterSession(n38Api, "n38uidOrg").equals("0"))) { // User is in the XLNets's LDap userInfo = XlnetCore.getUserDataInfo(n38Api); userData.put("name", userInfo.get("name")); userData.put("surname", userInfo.get("surname")); userData.put("fullName", userInfo.get("fullName")); httpSession.setAttribute("fullName", userInfo.get("fullName")); } else { // User isn't in the XLNets's LDap userData.put("name", userData.get("GIVENNAME")); userData.put("surname", userData.get("SURNAME")); // En caso de autentificarse mediante juego de barcos el campo // CN tendrá el valor de la propiedad dni del xml de sesión de // XLNets. userData.put("fullName", userData.get("CN")); httpSession.setAttribute("fullName", userData.get("CN")); } xmlSesion = null; userInfo = null; } logger.trace("Connected User's data is: " + userData.toString()); return userData; } public String getUserPosition(HttpServletRequest httpRequest) { String userPosition = null; userPosition = (String) httpRequest.getSession(false).getAttribute("position"); httpRequest.getSession(false).removeAttribute("position"); logger.trace("Connected User's Position is: " + userPosition); return userPosition; } public String getUdaValidateSessionId(HttpServletRequest httpRequest) { String udaValidateSessionId = null; udaValidateSessionId = (String) httpRequest.getSession(false).getAttribute("udaValidateSessionId"); // Returning UdaValidateSessionId httpRequest.getSession(false).removeAttribute("udaValidateSessionId"); logger.trace("Connected UserConnectedUidSession is: " + udaValidateSessionId); return udaValidateSessionId; } @SuppressWarnings("unchecked") public Vector<String> getUserInstances(HttpServletRequest httpRequest) { Vector<String> userInstances = null; userInstances = (Vector<String>) httpRequest.getSession(false).getAttribute("userProfiles"); // Returning UserInstances httpRequest.getSession(false).removeAttribute("userProfiles"); logger.trace("Connected UserConnectedUidSession is: " + userInstances); return userInstances; } public String getUserConnectedUidSession(HttpServletRequest httpRequest) { String userConnectedUidSession = null; HttpSession httpSession = httpRequest.getSession(false); if (httpSession != null) { userConnectedUidSession = (String) httpSession.getAttribute("uidSession"); // Returning UserConnectedUidSession httpRequest.getSession(false).removeAttribute("uidSession"); logger.trace("Connected UserConnectedUidSession is: " + userConnectedUidSession); } return userConnectedUidSession; } public String getPolicy(HttpServletRequest httpRequest) { String userPolicy = null; userPolicy = (String) httpRequest.getSession(false).getAttribute("policy"); // Returning UserPosition httpRequest.getSession(false).removeAttribute("policy"); logger.trace("Connected User's Policy is: " + userPolicy); return userPolicy; } public boolean getIsCertificate(HttpServletRequest httpRequest) { String userIsCertificate = null; boolean userBooleanIsCertificate; userIsCertificate = (String) httpRequest.getSession(false).getAttribute("isCertificate"); userBooleanIsCertificate = userIsCertificate.equals("true"); httpRequest.getSession(false).removeAttribute("isCertificate"); logger.trace("Connected User's isCertificate is: " + userBooleanIsCertificate); return userBooleanIsCertificate; } public String getNif(HttpServletRequest httpRequest) { String userNif = null; userNif = (String) httpRequest.getSession(false).getAttribute("nif"); // Returning UserNif httpRequest.getSession(false).removeAttribute("nif"); logger.trace("Connected User's nif is: " + userNif); return userNif; } /* [END] Methods to recovery the credentials data */ @Override public String getURLLogin(String originalURL, boolean ajax) { logger.debug("Original URLLogin is :" + originalURL); StringBuilder resultURL = new StringBuilder(StaticsContainer.loginUrl); if (originalURL != null && !"".equals(originalURL)) { resultURL.append(resultURL.indexOf("?")!=-1?"&":"?"); resultURL.append("N38API="); resultURL.append(originalURL); } logger.debug("URLLogin is: " + resultURL); return resultURL.toString(); } // Method not properly working due to N38 related issues @Override public void logout(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { String uidSession = getUserConnectedUidSession(httpRequest); if (uidSession == null) { N38API n38Api = XlnetCore.getN38API(httpRequest); uidSession = XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_N38UIDSESION); } logger.info("Proceeding to destroy uidSession: " + uidSession); N38APISesion n38ApiSesion = new N38APISesion(); n38ApiSesion.n38APISesionDestruir(uidSession); // Cleaning the cookies of XLNets deleteAllXLNetsCookies(httpRequest, httpResponse); logger.info("XLNets Session " + uidSession + " destroyed!"); } // Validates the N38API and, if is necessary, cleans the XLNets cookies protected boolean isN38ApiValid(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws SecurityException { Document xmlSesion = null; HttpSession httpSession = httpRequest.getSession(false); HashMap<String, String> userInfo = null; N38API n38Api; n38Api = XlnetCore.getN38API(httpRequest); if (n38Api != null) { logger.info("Validating the session of XLNets!"); try { xmlSesion = XlnetCore.getN38ItemSesion(n38Api); if (XlnetCore.isXlnetSessionContainingErrors(xmlSesion) || XlnetCore.isXlnetSessionContainingWarnings(xmlSesion)) { logger.info("The XLNET session is invalid"); // Deleting security context data n38Api = null; xmlSesion = null; // deleteAllXLNetsCookies(httpRequest, httpResponse); logout(httpRequest, httpResponse); authenticationLogContextClean(); return false; } else { logger.info("XLNET session is valid."); if (!(XlnetCore.getParameterSession(n38Api, "n38uidOrg").equals("0"))) { // User is in the XLNets's LDap userInfo = XlnetCore.getUserDataInfo(n38Api); httpSession.setAttribute("name", userInfo.get("name")); httpSession.setAttribute("surname", userInfo.get("surname")); httpSession.setAttribute("fullName", userInfo.get("fullName")); } else { // User isn't in the XLNets's LDap userInfo = XlnetCore.getN38SubjectCert(xmlSesion); httpSession.setAttribute("serialNumber", userInfo.get("SERIALNUMBER")); httpSession.setAttribute("name", userInfo.get("GIVENNAME")); httpSession.setAttribute("surname", userInfo.get("SURNAME")); // En caso de autentificarse mediante juego de barcos el // campo CN tendrá el valor de la propiedad dni del xml // de sesión de XLNets. httpSession.setAttribute("fullName", userInfo.get("CN")); } if (xlnetsDomain == null) { xlnetsDomain = XlnetCore.getN38DominioComunCookie(xmlSesion); } // Deleting security context data n38Api = null; xmlSesion = null; return true; } } catch (Exception e) { logger.error("isN38ApiValid(): There was an access error in XLNets. it Is possible that you having any problem with the configuration of XLNets or XLNets have some own internal error (Check that the service works correctly).", e); SecurityException sec = new SecurityException("isN38ApiValid(): There was an access error in XLNets. it Is possible that you having any problem with the configuration of XLNets or XLNets have some own internal error (Check that the service works correctly).", e.getCause()); throw sec; } } else { deleteAllXLNetsCookies(httpRequest, httpResponse); return false; } } // Cleaner method unregister Authentication Configuration private void authenticationLogContextClean() { MDC.put(LogConstants.SESSION, "N/A"); MDC.put(LogConstants.USER, "N/A"); MDC.put(LogConstants.POSITION, "N/A"); } // Cleaner method of SpringSecurity context private void springSecurityContextClean(HttpSession httpSession) { logger.info("XLNET session is invalid. Proceeding to clean the Security Context Holder."); Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { authentication.setAuthenticated(false); } SecurityContextHolder.clearContext(); if (httpSession.getAttribute("SPRING_SECURITY_CONTEXT") != null) { httpSession.removeAttribute("SPRING_SECURITY_CONTEXT"); } } // Delete all the security cookies of XLNets private void deleteAllXLNetsCookies(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { if (xlnetsDomain != null) { Cookie requestCookies[] = httpRequest.getCookies(); Cookie n38Cookie; if (requestCookies != null) { for (int i = 0; i < requestCookies.length; i++) { if (requestCookies[i].getName().split("n38").length > 1) { n38Cookie = requestCookies[i]; n38Cookie.setDomain(xlnetsDomain); n38Cookie.setMaxAge(0); n38Cookie.setPath("/"); httpResponse.addCookie(n38Cookie); } } } } } // Recovery the unique User Id private String getXlnetsUserId(HttpServletRequest httpRequest) { Cookie requestCookies[] = httpRequest.getCookies(); Cookie n38UidSesion = null; Cookie n38UidSistemasXLNetS = null; StringBuilder udaXLNetsSessionId = new StringBuilder(); if (requestCookies != null) { for (int i = 0; i < requestCookies.length; i++) { if (requestCookies[i].getName().equals("n38UidSesion")) { n38UidSesion = requestCookies[i]; } else if (requestCookies[i].getName().equals("n38UidSistemasXLNetS")) { n38UidSistemasXLNetS = requestCookies[i]; } } } logger.debug("getXlnetsUserId: udaXlnetsSession value"); if (n38UidSesion != null && n38UidSistemasXLNetS != null) { udaXLNetsSessionId.append(n38UidSistemasXLNetS.getValue()).append("-").append(n38UidSesion.getValue()); logger.debug("getXlnetsUserId: cookie - n38UidSistemasXLNetS => " + n38UidSistemasXLNetS.getValue()); } else if (n38UidSesion != null) { udaXLNetsSessionId.append(n38UidSesion.getValue()); logger.debug("getXlnetsUserId: cookie - n38UidSesion => " + n38UidSesion.getValue()); } else { logger.debug("getXlnetsUserId: null"); return null; } logger.debug("getXlnetsUserId: udaXlnetsSession value => " + udaXLNetsSessionId.toString()); return udaXLNetsSessionId.toString(); } // Recovery and storage of the Credential info of XLNets protected String loadXlnetsCredentialInfo(HttpServletRequest httpRequest, String xLNetsUserId) { N38API n38Api = XlnetCore.getN38API(httpRequest); HttpSession httpSession = httpRequest.getSession(false); Document xmlSecurityData = null; Vector<String> userProfiles = new Vector<String>(); String UserName; String serialNumber = null; String policy; // Recovering general data of XLNets user credentials httpSession.setAttribute("nif", XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_DNI)); policy = XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_N38CERTIFICADOPOLITICAS); httpSession.setAttribute("policy", policy); if (!(policy.toLowerCase().equals("no"))) { httpSession.setAttribute("isCertificate", "true"); } else { httpSession.setAttribute("isCertificate", "false"); } if (!(XlnetCore.getParameterSession(n38Api, "n38uidOrg").equals("0"))) { // User is in the XLNets's LDap UserName = XlnetCore.getParameterSession(n38Api, "n38personasuid"); // Recovering XLNets user credentials httpSession.setAttribute("userName", UserName); httpSession.setAttribute("position", XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_N38PUESTOUID)); httpSession.setAttribute("uidSession", XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_N38UIDSESION)); httpSession.setAttribute("udaValidateSessionId", xLNetsUserId); // Getting user's profiles if (this.alternativeOriginCredentialsApp != null && this.alternativeOriginCredentialsApp.existAditionalsAppCodes(httpRequest)) { List<String> appCodes = this.alternativeOriginCredentialsApp.getAppCodes(httpRequest); Iterator<String> appCodesIterator = appCodes.iterator(); String appCode; while (appCodesIterator.hasNext()) { appCode = appCodesIterator.next(); xmlSecurityData = XlnetCore.getN38ItemSeguridad(n38Api, appCode); if (xmlSecurityData != null) { userProfiles.addAll(XlnetCore.searchParameterIntoXlnetSesion(xmlSecurityData, XlnetCore.PATH_SUBTIPO_N38INSTANCIA)); } } } xmlSecurityData = XlnetCore.getN38ItemSeguridad(n38Api, StaticsContainer.webAppName); if (xmlSecurityData != null) { if (this.useXlnetProfiles){ userProfiles.addAll(XlnetCore.searchParameterIntoXlnetSesion(XlnetCore.getN38ItemSesion(n38Api), XlnetCore.PATH_XMLSESION_N38PERFILES)); } userProfiles.addAll(XlnetCore.searchParameterIntoXlnetSesion(xmlSecurityData, XlnetCore.PATH_SUBTIPO_N38INSTANCIA)); if (this.alternativeStorageUserCredentials != null) { userProfiles.addAll(this.alternativeStorageUserCredentials.loadUserAuthorities(UserName, XlnetCore.getParameterSession(n38Api, N38API.NOMBRE_DNI), n38Api)); } } // Set obtain user's profiles httpSession.setAttribute("userProfiles", userProfiles); } else { // User isn't in the XLNets's LDap UserName = (String) httpSession.getAttribute("fullName"); serialNumber = (String) httpSession.getAttribute("serialNumber"); // Recovering user credentials httpSession.setAttribute("userName", UserName); httpSession.setAttribute("uidSession", httpSession.getId()); httpSession.setAttribute("udaValidateSessionId", xLNetsUserId); Vector<String> userprofile = new Vector<String>(); if (this.alternativeStorageUserCredentials == null) { userprofile.add(this.anonymousProfile.get("userProfiles")); httpSession.setAttribute("position", this.anonymousProfile.get("position")); } else { userprofile = this.alternativeStorageUserCredentials.loadUserAuthorities(UserName, serialNumber, n38Api); httpSession.setAttribute("position", this.alternativeStorageUserCredentials.loadUserPosition(UserName, serialNumber, n38Api)); } // Deleting the serialNumber object httpSession.removeAttribute("serialNumber"); httpSession.setAttribute("userProfiles", userprofile); } httpSession.setAttribute("destroySessionSecuritySystem", this.destroySessionSecuritySystem); return UserName; } private synchronized void loadReloadData(HttpServletRequest httpRequest, Long currentThreadId) { HttpSession session = httpRequest.getSession(false); if (session != null && session.getAttribute("reloadData") == null) { logger.debug("loadReloadData: " + currentThreadId.toString()); session.setAttribute("reloadData", currentThreadId); } } private synchronized boolean reloadData(HttpServletRequest httpRequest) { HttpSession httpSession = httpRequest.getSession(false); if (httpSession.getAttribute("credentialsLoading") == null && (System.currentTimeMillis() - Long.valueOf(httpSession.getAttribute("udaTimeStamp") + "")) > xlnetCachingPeriod.longValue()) { // Recharging the lifetime of the cache httpSession.removeAttribute("udaTimeStamp"); httpSession.setAttribute("udaTimeStamp", System.currentTimeMillis()); return true; } else { return false; } } // Getters & Setters public Long getXlnetCachingPeriod() { return TimeUnit.SECONDS.convert(this.xlnetCachingPeriod.longValue(), TimeUnit.MILLISECONDS); } public String getUserChangeUrl() { return this.userChangeUrl; } public UdaCustomJdbcDaoImpl getAlternativeStorageUserCredentials() { return this.alternativeStorageUserCredentials; } public HashMap<String, String> getAnonymousProfile() { return this.anonymousProfile; } public boolean getDestroySessionSecuritySystem() { return this.destroySessionSecuritySystem; } public ExcludeFilter getExcludeFilter() { return this.excludeFilter; } public Object getAlternativeOriginCredentialsApp() { return this.alternativeOriginCredentialsApp; } public Object getSpecificCredentials() { return this.specificCredentials; } public Credentials getCredentials() { if (specificCredentialsName == null) { return new UserCredentials(); } else { try { return (Credentials) Class.forName(specificCredentialsName).newInstance(); } catch (Exception e) { logger.error("getCredentials(): The object specified to the parameter \"SpecificCredentials\" is not correct. The object has not been instantiated", e); SecurityException sec = new SecurityException("getCredentials(): The object specified to the parameter \"SpecificCredentials\" is not correct. The object has not been instantiated", e.getCause()); throw sec; } } } public void setXlnetCachingPeriod(Long xlnetCachingPeriod) { this.xlnetCachingPeriod = TimeUnit.MILLISECONDS.convert(xlnetCachingPeriod.longValue(), TimeUnit.SECONDS); } public void setUserChangeUrl(String userChangeUrl) { this.userChangeUrl = userChangeUrl; } public void setAlternativeStorageUserCredentials(UdaCustomJdbcDaoImpl alternativeStorageUserCredentials) { if (alternativeStorageUserCredentials.getPositionByUserdataQuery() != null && alternativeStorageUserCredentials.getAuthoritiesByUserdataQuery() != null) { this.alternativeStorageUserCredentials = alternativeStorageUserCredentials; } else { // Not being a path to an xml file an exception is raised and does // not load UnsatisfiedDependencyException exc = new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "alternativeStorageUserCredentials", "The PositionByUserdataQuery parameter and the AuthoritiesByUserdataQuery parameter can't be nulls"); logger.error("The PositionByUserdataQuery parameter and the AuthoritiesByUserdataQuery parameter can't be nulls.", exc); throw exc; } } public void setAnonymousCredentials(HashMap<String, String> anonymousProfile) { this.anonymousProfile = anonymousProfile; } public void setDestroySessionSecuritySystem(boolean destroySessionSecuritySystem) { this.destroySessionSecuritySystem = destroySessionSecuritySystem; } public void setExcludeFilter(ExcludeFilter excludeFilter) { this.excludeFilter = excludeFilter; } public boolean isUseXlnetProfiles() { return useXlnetProfiles; } public void setUseXlnetProfiles(boolean useXlnetProfiles) { this.useXlnetProfiles = useXlnetProfiles; } @SuppressWarnings("unchecked") public void setAlternativeOriginCredentialsApp(Object alternativeOriginCredentialsApp) { AlternativeOriginCredentialsApp alternativeOriginCredentialsAppObject; try { if (alternativeOriginCredentialsApp instanceof String) { alternativeOriginCredentialsAppObject = new AlternativeOriginCredentialsAppImp((String) alternativeOriginCredentialsApp); } else if (alternativeOriginCredentialsApp instanceof List<?>) { List<Object> validateAlternativeOriginCredentialsApp = (List<Object>) alternativeOriginCredentialsApp; for (Object o : validateAlternativeOriginCredentialsApp) if (!(o instanceof String)) throw new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "alternativeOriginCredentialsApp", "The specified object is not correct to the parameter \"alternativeOriginCredentialsApp\". The object must be instace of String, List <String> or AlternativeOriginCredentialsApp."); alternativeOriginCredentialsAppObject = new AlternativeOriginCredentialsAppImp((List<String>) alternativeOriginCredentialsApp); } else if (alternativeOriginCredentialsApp instanceof AlternativeOriginCredentialsApp) { alternativeOriginCredentialsAppObject = (AlternativeOriginCredentialsApp) alternativeOriginCredentialsApp; } else { throw new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "alternativeOriginCredentialsApp", "The specified object is not correct to the parameter \"alternativeOriginCredentialsApp\". The object must be instace of String, List <String> or AlternativeOriginCredentialsApp."); } } catch (Exception e) { // As the specified object is not correct to the parameter // "alternativeOriginCredentialsApp", an exception is raised and the // application doesn't will deploy an exception is raised and does // not load UnsatisfiedDependencyException exc = new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "alternativeOriginCredentialsApp", "The specified object is not correct to the parameter \"alternativeOriginCredentialsApp\". The object must be instace of String, List <String> or AlternativeOriginCredentialsApp."); logger.error("The specified object is not correct to the parameter \"alternativeOriginCredentialsApp\". The object must be instace of String, List <String> or AlternativeOriginCredentialsApp.", exc); throw exc; } this.alternativeOriginCredentialsApp = alternativeOriginCredentialsAppObject; } public void setSpecificCredentials(Object credentials) { Object specificCredentials = credentials; try { if (specificCredentials instanceof String) { specificCredentials = Class.forName((String) credentials).newInstance(); } if (specificCredentials instanceof Credentials) { this.specificCredentialsName = specificCredentials.getClass().getName(); } else { throw new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "setSpecificCredentials", "The specified object is not correct to the parameter \"SpecificCredentials\". The object must be instace of String (className of a Class than extend the \"Credentials\" Class) or one Bean of a Class than extend the \"Credentials\" Class."); } } catch (Exception e) { throw new UnsatisfiedDependencyException("security-config", "PerimetralSecurityWrapperN38Impl", "setSpecificCredentials", "The specified object is not correct to the parameter \"SpecificCredentials\". The object must be instace of String (className of a Class than extend the \"Credentials\" Class) or one Bean of a Class than extend the \"Credentials\" Class."); } finally { this.specificCredentials = specificCredentials; } } }