/** * */ package org.gcube.datatransfer.resolver.gis.geonetwork; import org.apache.commons.httpclient.HttpStatus; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The Class GNAuthentication. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * Apr 4, 2016 */ public class GNAuthentication { private static Logger logger = LoggerFactory.getLogger(GNAuthentication.class); public static final String XML_USER_LOGOUT = "xml.user.logout"; private static final String SRV_EN_XML_USER_LOGIN = "/srv/en/xml.user.login"; /** * Perform a GN login.
* GN auth is carried out via a JSESSIONID cookie returned by a successful login * call.
* * * * @param connection the connection * @param serviceURL the service url * @param username the username * @param password the password * @return true, if successful */ public static boolean login(HTTPCallsUtils connection, String serviceURL, String username, String password) { Element request = new Element("request"); request.addContent(new Element("username").setText(username)); request.addContent(new Element("password").setText(password)); XMLOutputter outputter = new XMLOutputter(Format.getCompactFormat()); String xml = outputter.outputString(request); logger.trace("Authentication on Geonetwork: "+xml); String loginURL = serviceURL+SRV_EN_XML_USER_LOGIN; connection.postXml(loginURL, xml); return connection.getLastHttpStatus() == HttpStatus.SC_OK; } /** * Logout. * * @param connection the connection * @param serviceURL the service url * @return true, if successful */ public static boolean logout(HTTPCallsUtils connection, String serviceURL) { Element request = new Element("request"); XMLOutputter outputter = new XMLOutputter(Format.getCompactFormat()); String xml = outputter.outputString(request); String logOut = serviceURL+XML_USER_LOGOUT; connection.postXml(logOut, xml); return connection.getLastHttpStatus() == HttpStatus.SC_OK; } }