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

106 lines
3.1 KiB
Java

package de.hsadmin.remote;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
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 java.util.Properties;
import javax.net.ssl.HttpsURLConnection;
public class RemoteCASHelper {
private static String LOGIN_URL = "https://login.hostsharing.net:443/cas/v1/tickets";
private String loginURL;
private Properties config;
public RemoteCASHelper() {
initConfig();
}
private void initConfig() {
config = new Properties();
try {
config.load(new FileInputStream( new File(System.getProperty("user.home"), ".hsadmin.conf")));
} catch (IOException e) {
}
loginURL = config.getProperty("loginURL", LOGIN_URL);
}
public String getGrantingTicketURL(String user, String pw) {
if ("peh00".equals(pw)) {
pw = config.getProperty("peh00.passWord", "-");
}
if ("peh01".equals(pw)) {
pw = config.getProperty("peh01.passWord", "-");
}
if ("pe".equals(pw)) {
pw = config.getProperty("pe.passWord", "-");
}
if (user.equals(pw)) {
System.err.println("Unknown Password for: " + pw);
return null;
}
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;
}
}