hs.hsadmin/hsarback/test/de/hsadmin/remote/RemoteCASHelper.java

87 lines
2.6 KiB
Java

package de.hsadmin.remote;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import javax.net.ssl.HttpsURLConnection;
import de.hsadmin.core.util.Config;
public class RemoteCASHelper {
private static String LOGIN_URL = "https://login.hostsharing.net:443/cas/v1/tickets";
private String loginURL;
public RemoteCASHelper() {
initConfig();
}
private void initConfig() {
loginURL = Config.getInstance().getProperty("loginURL", LOGIN_URL);
}
public String getGrantingTicketURL(String user) {
String pw = Config.getInstance().getProperty(user + ".passWord", "-");
try {
String encodedParams = URLEncoder.encode("username", "UTF-8")
+ "=" + URLEncoder.encode(user, "UTF-8")
+ "&" + URLEncoder.encode("password", "UTF-8")
+ "=" + URLEncoder.encode(pw, "UTF-8");
return doHttpPost(loginURL, encodedParams);
} catch (UnsupportedEncodingException e) {
System.err.println(e.getMessage());
return null;
}
}
public String getServiceTicket(String location, String service) {
try {
String encodedParams = URLEncoder.encode("service", "UTF-8")
+ "=" + URLEncoder.encode(service, "UTF-8");
return doHttpPost(location, encodedParams);
} catch (UnsupportedEncodingException e) {
System.err.println(e.getMessage());
return null;
}
}
private String doHttpPost(String urlString, String encodedParams) {
String result = null;
try {
URL url = new URL(urlString);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setAllowUserInteraction(false);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
writer.write(encodedParams);
writer.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String ticket = reader.readLine();
String readLine = null;
do {
readLine = reader.readLine();
} while (readLine != null);
result = connection.getHeaderField("Location");
if (ticket != null && ticket.startsWith("ST-")) {
result = ticket;
}
} catch (IOException e) {
System.err.println(e.getMessage());
return null;
}
return result;
}
}