87 lines
2.6 KiB
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;
|
|
}
|
|
|
|
}
|