summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/util/ShibbolethECP.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-07-08 19:39:35 +0200
committerSimon Rettberg2015-07-08 19:39:35 +0200
commit8d6cd17c330388aa13fd7c39802c7400d85f972c (patch)
tree5f2c5856f58b1454e24dc16fad10751dfe9d087b /dozentenmodul/src/main/java/util/ShibbolethECP.java
parentoops (diff)
downloadtutor-module-8d6cd17c330388aa13fd7c39802c7400d85f972c.tar.gz
tutor-module-8d6cd17c330388aa13fd7c39802c7400d85f972c.tar.xz
tutor-module-8d6cd17c330388aa13fd7c39802c7400d85f972c.zip
[client] Redo package structure, add comments/TODOs, rename GUI classes
Diffstat (limited to 'dozentenmodul/src/main/java/util/ShibbolethECP.java')
-rw-r--r--dozentenmodul/src/main/java/util/ShibbolethECP.java172
1 files changed, 0 insertions, 172 deletions
diff --git a/dozentenmodul/src/main/java/util/ShibbolethECP.java b/dozentenmodul/src/main/java/util/ShibbolethECP.java
deleted file mode 100644
index 7844a51e..00000000
--- a/dozentenmodul/src/main/java/util/ShibbolethECP.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package util;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.ParseException;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.util.EntityUtils;
-import org.apache.log4j.Logger;
-import org.openslx.bwlp.thrift.iface.AuthenticationError;
-import org.openslx.bwlp.thrift.iface.TAuthenticationException;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonSyntaxException;
-
-import edu.kit.scc.dei.ecplean.ECPAuthenticationException;
-import edu.kit.scc.dei.ecplean.ECPAuthenticator;
-
-public class ShibbolethECP {
-
- /**
- * Logger instance for this class
- */
- private final static Logger LOGGER = Logger.getLogger(ShibbolethECP.class);
-
- /**
- * Static gson object for (de)serialization
- */
- private static final Gson GSON = new GsonBuilder().create();
-
- /**
- * ServiceProviderResponse Object representing the last response we received
- */
- private static ServiceProviderResponse lastResponse = null;
- /**
- * URL for bwLehrpool registration
- */
- private static URL registrationUrl = null;
- /**
- * Return codes
- */
- public static enum ReturnCode {
- NO_ERROR(0, "Authentication against the identity provider and request of the service provider resource worked."),
- IDP_ERROR(1, "Authentication against the identity provider failed."),
- UNREG_ERROR(2, "User not registered to use bwLehrpool."),
- ERROR_SP(3, "Invalid resource of the service provider."),
- ERROR_URL(4, "Invalid URL received from master server."),
- ERROR_OTHER(5, "Internal error.");
-
- private final int id;
- private final String msg;
-
- ReturnCode(int id, String msg) {
- this.id = id;
- this.msg = msg;
- }
-
- public int getId() {
- return this.id;
- }
-
- public String getMsg() {
- return this.msg;
- }
- }
-
- /**
- * Static URI to the SP.
- */
- private final static URI BWLP_SP;
- static {
- URI tmp;
- try {
- tmp = new URI("https://bwlp-masterserver.ruf.uni-freiburg.de/webif/shib/api.php");
- } catch (URISyntaxException e) {
- // should never happen!
- LOGGER.error("Bad URI syntax of the service provider, see trace: ", e);
- tmp = null;
- }
- BWLP_SP = tmp;
- }
-
- public static ServiceProviderResponse getResponse() {
- return lastResponse;
- }
- /**
- * Fetches the resource
- *
- * @param idpUrl
- * URL of the identity provider to authenticate against, as String.
- * @param user
- * Username as String.
- * @param pass
- * Password as String.
- * @return
- * true if login worked, false otherwise.
- * @throws TAuthenticationException
- */
- public static ReturnCode doLogin(final String idpUrl, final String user, final String pass)
- throws TAuthenticationException, URISyntaxException, ClientProtocolException, IOException,
- ParseException, JsonSyntaxException, MalformedURLException {
-
- // first lets do some sanity checks
- if (BWLP_SP == null) {
- LOGGER.error("URI to service provider is not set. Check the initialization of 'BWLP_SP'.");
- return ReturnCode.ERROR_OTHER;
- }
- if (idpUrl == null) {
- LOGGER.error("Identity provider is not set, did you initialize this class correctly?");
- return ReturnCode.ERROR_OTHER;
- }
- if (user == null) {
- LOGGER.error("No username given, aborting...");
- return ReturnCode.ERROR_OTHER;
- }
- if (pass == null) {
- LOGGER.error("No password given, aborting...");
- return ReturnCode.ERROR_OTHER;
- }
-
- // now init the authenticator for that idp and our static sp
- final ECPAuthenticator auth = new ECPAuthenticator(user, pass, new URI(idpUrl), BWLP_SP);
-
- try {
- auth.authenticate();
- } catch (ECPAuthenticationException e) {
- LOGGER.error("ECP Authentication Exception, see trace: ", e);
- throw new TAuthenticationException(AuthenticationError.GENERIC_ERROR, e.getMessage());
- }
- // here test again for the SP's URL
- final HttpGet testSp = new HttpGet(BWLP_SP);
- final HttpResponse response = auth.getHttpClient().execute(testSp);
-
- LOGGER.debug("SP request returned: " + response.getStatusLine());
- final String responseBody = EntityUtils.toString(response.getEntity());
-
- lastResponse = GSON.fromJson(responseBody, ServiceProviderResponse.class);
-
- // TODO: here we will need to parse the answer accordingly.
- // no errors, meaning everything worked fine.
- if (lastResponse.status.equals("unregistered")) {
- registrationUrl = new URL(lastResponse.url);
- return ReturnCode.UNREG_ERROR;
- }
- // TODO the rest of the cases...
- if (lastResponse.status.equals("error")) {
- LOGGER.error("Server side error: " + lastResponse.error);
- return ReturnCode.ERROR_OTHER;
- }
- if (lastResponse.status.equals("anonymous")) {
- LOGGER.error("IdP did not forward user account information to SP. Contact developper.");
- return ReturnCode.ERROR_OTHER;
- }
- if (lastResponse.status.equals("ok")) {
- return ReturnCode.NO_ERROR;
- }
- // still here? then something else went wrong
- return ReturnCode.ERROR_OTHER;
- }
- /**
- * @return Registration URL given by the SP.
- */
- public static URL getRegistrationUrl() {
- return registrationUrl;
- }
-}