teichmann@5835: package org.dive4elements.river.client.server.auth.was; bjoern@2956: bjoern@2956: import java.io.UnsupportedEncodingException; bjoern@2956: import java.net.URI; bjoern@2956: bjoern@2956: import org.apache.commons.codec.binary.Base64; bjoern@2956: import org.apache.http.client.methods.HttpGet; bjoern@2956: import org.apache.log4j.Logger; bjoern@2956: bjoern@2956: public class Request extends HttpGet { bjoern@2956: bjoern@2956: private final static String VERSION = "1.1"; bjoern@2956: private final static String REQUEST_SAML_RESPONSE = "GetSAMLResponse"; bjoern@2956: private final static String METHOD_AUTH_PASSWORD = bjoern@2956: "urn:opengeospatial:authNMethod:OWS:1.0:password"; bjoern@2956: bjoern@2956: private static Logger logger = Logger.getLogger(Request.class); bjoern@2956: bjoern@2956: public Request(String uri) { bjoern@2956: String request = uri + "?VERSION=" + VERSION + "&REQUEST=" + bjoern@2956: REQUEST_SAML_RESPONSE + "&METHOD=" + METHOD_AUTH_PASSWORD + bjoern@2956: "&ANONYMOUS=TRUE&CREDENTIALS="; bjoern@2956: this.setURI(URI.create(request)); bjoern@2956: } bjoern@2956: bjoern@2956: public Request(String uri, String user, String pass, String encoding) { bjoern@2956: try { bjoern@2956: String base64user = this.toBase64(user, encoding); bjoern@2956: String base64pass = this.toBase64(pass, encoding); bjoern@2956: bjoern@2956: String request = uri + "?VERSION=" + VERSION + "&REQUEST=" + bjoern@2956: REQUEST_SAML_RESPONSE + "&METHOD=" + METHOD_AUTH_PASSWORD + bjoern@2956: "&CREDENTIALS=" + base64user + "," + base64pass; bjoern@2956: bjoern@2956: this.setURI(URI.create(request)); bjoern@2956: } bjoern@2956: catch(UnsupportedEncodingException e) { bjoern@2956: logger.error(e); bjoern@2956: } bjoern@2956: } bjoern@2956: bjoern@2956: private String toBase64(String value, String encoding) throws bjoern@2956: UnsupportedEncodingException { bjoern@2956: if (encoding == null) { bjoern@2956: encoding = "utf-8"; bjoern@2956: } bjoern@2956: try { bjoern@2956: return new String(Base64.encodeBase64(value.getBytes(encoding))); bjoern@2956: } bjoern@2956: catch(UnsupportedEncodingException e) { bjoern@2956: logger.warn("Can't encode string with encoding " + encoding + bjoern@2956: ". Falling back to utf-8. " + e); bjoern@2956: return this.toBase64(value, "utf-8"); bjoern@2956: } bjoern@2956: } bjoern@2956: bjoern@2956: } bjoern@2956: // vim: set et si fileencoding=utf-8 ts=4 sw=4 tw=80: bjoern@2956: