/** * Copyright (c) 2010-2016 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.openhab.binding.ihc.ws; import org.openhab.binding.ihc.ws.datatypes.WSLoginResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Class to handle IHC / ELKO LS Controller's authentication service. * * Communication to controller need to be authenticated. On successful * authentication Controller returns session id which need to be used further * communication. * * @author Pauli Anttila * @since 1.5.0 */ public class IhcAuthenticationService extends IhcHttpsClient { private static final Logger logger = LoggerFactory.getLogger(IhcAuthenticationService.class); private String url; private int timeout; IhcAuthenticationService(String host) { url = "https://" + host + "/ws/AuthenticationService"; } IhcAuthenticationService(String host, int timeout) { this(host); this.timeout = timeout; super.setConnectTimeout(timeout); } public WSLoginResult authenticate(String username, String password, String application) throws IhcExecption { logger.debug("Open connection"); final String soapQuery = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<soapenv:Body>" + " <authenticate1 xmlns=\"utcs\">" + " <password>%s</password>" + " <username>%s</username>" + " <application>%s</application>" + " </authenticate1>" + "</soapenv:Body>" + "</soapenv:Envelope>"; String query = String.format(soapQuery, password, username, application); openConnection(url); String response = sendQuery(query, timeout); WSLoginResult loginResult = new WSLoginResult(); loginResult.encodeData(response); return loginResult; } }