view flys-client/src/main/java/de/intevation/flys/client/server/auth/was/Request.java @ 4488:5041105d2edd

Check if response code from GGInA is 200 OK Only parse the GGInA response if the status code is 200 OK. This improves the error message if GGInA is not available and shows the real reason instead of a JDOM error while parsing the response.
author Björn Ricks <bjoern.ricks@intevation.de>
date Wed, 14 Nov 2012 10:36:21 +0100
parents e0c6de3a9803
children
line wrap: on
line source
package de.intevation.flys.client.server.auth.was;

import java.io.UnsupportedEncodingException;
import java.net.URI;

import org.apache.commons.codec.binary.Base64;
import org.apache.http.client.methods.HttpGet;
import org.apache.log4j.Logger;

public class Request extends HttpGet {

    private final static String VERSION = "1.1";
    private final static String REQUEST_SAML_RESPONSE = "GetSAMLResponse";
    private final static String METHOD_AUTH_PASSWORD =
        "urn:opengeospatial:authNMethod:OWS:1.0:password";

    private static Logger logger = Logger.getLogger(Request.class);

    public Request(String uri) {
        String request = uri + "?VERSION=" + VERSION + "&REQUEST=" +
            REQUEST_SAML_RESPONSE + "&METHOD=" + METHOD_AUTH_PASSWORD +
            "&ANONYMOUS=TRUE&CREDENTIALS=";
        this.setURI(URI.create(request));
    }

    public Request(String uri, String user, String pass, String encoding) {
        try {
            String base64user = this.toBase64(user, encoding);
            String base64pass = this.toBase64(pass, encoding);

            String request = uri + "?VERSION=" + VERSION + "&REQUEST=" +
                REQUEST_SAML_RESPONSE + "&METHOD=" + METHOD_AUTH_PASSWORD +
                "&CREDENTIALS=" + base64user + "," + base64pass;

            this.setURI(URI.create(request));
        }
        catch(UnsupportedEncodingException e) {
            logger.error(e);
        }
    }

    private String toBase64(String value, String encoding) throws
        UnsupportedEncodingException {
        if (encoding == null) {
            encoding = "utf-8";
        }
        try {
            return new String(Base64.encodeBase64(value.getBytes(encoding)));
        }
        catch(UnsupportedEncodingException e) {
            logger.warn("Can't encode string with encoding " + encoding +
                    ". Falling back to utf-8. " + e);
            return this.toBase64(value, "utf-8");
        }
    }

}
// vim: set et si fileencoding=utf-8 ts=4 sw=4 tw=80:

http://dive4elements.wald.intevation.org