From 437267c781707538862abe4047d11b7e0548fb8a Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Fri, 29 May 2015 11:31:48 -0400 Subject: [PATCH 01/10] Added static links for library --- .../mit/mitmobile2/libraries/LibrariesFragment.java | 7 ++++--- .../mitmobile2/libraries/model/MITLibrariesLink.java | 6 ++---- app/src/main/res/values/strings.xml | 12 ++++++++++++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java b/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java index b2ef4fbea..fc1ca658f 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java @@ -232,9 +232,10 @@ private void refreshLinks(List mitLibrariesLink) { links.clear(); if (mitLibrariesLink != null) { // add predefined links here - String[] predefinedLinks = getResources().getStringArray(R.array.predefined_link_titles); - for (String title : predefinedLinks) { - links.add(new MITLibrariesLink(title)); + String[] predefinedTitles = getResources().getStringArray(R.array.predefined_link_titles); + String[] predefinedLinks = getResources().getStringArray(R.array.predefined_links); + for (int i = 0; i < predefinedLinks.length; i++) { + links.add(new MITLibrariesLink(predefinedTitles[i], predefinedLinks[i])); } links.addAll(mitLibrariesLink); } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesLink.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesLink.java index 3994c8f50..edffde2b6 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesLink.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesLink.java @@ -5,9 +5,6 @@ import com.google.gson.annotations.SerializedName; -/** - * Created by serg on 5/19/15. - */ public class MITLibrariesLink implements Parcelable { @SerializedName("title") @@ -20,8 +17,9 @@ public MITLibrariesLink() { // empty constructor } - public MITLibrariesLink(String title) { + public MITLibrariesLink(String title, String url) { this.title = title; + this.url = url; } public String getTitle() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ca432b6ea..496c0e688 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -223,9 +223,21 @@ MON - SUN + Search Locations & Hours + Find a Study Space Ask Us Tell Us + News & Events + + + + http://libraries.mit.edu/search/ + http://libraries.mit.edu/hours/ + http://libraries.mit.edu/study/ + http://libraries.mit.edu/ask/ + http://libraries.mit.edu/tellus + http://libraries.mit.edu/news/ Touchstone From ee8caba38b10d17bf9eee93cf707bb1b097e8634 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Fri, 29 May 2015 13:43:36 -0400 Subject: [PATCH 02/10] Removed unused activities --- app/src/main/AndroidManifest.xml | 30 -- .../dining/activities/DiningActivity.java | 21 - .../facilities/FacilitiesActivity.java | 16 - .../libraries/LibrariesActivity.java | 18 - .../mit/mitmobile2/links/LinksActivity.java | 17 - .../edu/mit/mitmobile2/maps/MapsActivity.java | 227 ---------- .../mitmobile2/qrreader/QrreaderActivity.java | 17 - .../shuttles/activities/ShuttlesActivity.java | 390 ------------------ 8 files changed, 736 deletions(-) delete mode 100644 app/src/main/java/edu/mit/mitmobile2/dining/activities/DiningActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/facilities/FacilitiesActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/links/LinksActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/maps/MapsActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/qrreader/QrreaderActivity.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/shuttles/activities/ShuttlesActivity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 03c834b58..a1407c631 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,36 +85,6 @@ - - - - - - latLngList, GoogleMap googleMap) - { - LatLngBounds.Builder builder = new LatLngBounds.Builder(); - - for (LatLng marker : latLngList) - { - builder.include(marker); - } - - LatLngBounds bounds = builder.build(); - int padding = 0; // offset from edges of the map in pixels - CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); - googleMap.moveCamera(cu); - googleMap.animateCamera(cu); - } - - public void toggleMap() { - // this method toggles between the full size map view and the split screen map with content view - - - // collapse the map if there the map items list is not empty - // the map list button shouldn't be visible if there are no map items to display - if (!mapItems.isEmpty() && mapListView.getVisibility() == View.GONE) { - if (mapView.getLastClickedMarker() != null) { - mapView.getLastClickedMarker().hideInfoWindow(); - } - mapListView.setVisibility(View.VISIBLE); - Log.d(TAG,"list view height = " + mapListView.getHeight()); - showListButton.setVisibility(View.GONE); - showLocationButton.setVisibility(View.GONE); - mapView.toggle(); - } - // expand the map - else { - mapListView.setVisibility(View.GONE); - showListButton.setVisibility(View.VISIBLE); - showLocationButton.setVisibility(View.VISIBLE); - mapView.toggle(); - } - - } - - // Add transparent header to list to set initial position below the map - protected LinearLayout getMapListHeader() { - LinearLayout header = (LinearLayout)inflater.inflate(R.layout.map_list_header, mapListView, false); - header.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - toggleMap(); - } - }); - - return header; - } - - // Override this method to get map items - protected void getMapItems(Map params) { - } - - // Override this method to specify the map item handler - protected Handler getMapItemHandler() { - return null; - } - - // Override this method to use a custom ArrayAdapter - protected ArrayAdapter getMapItemAdapter() { - return null; - } - - // Override this method to use a custom InfoWindowAdapter - protected GoogleMap.InfoWindowAdapter getInfoWindowAdapter() { - return null; - } - - // Override this method to use a custom OnInfoWindowClickListener - protected GoogleMap.OnInfoWindowClickListener getOnInfoWindowClickListener() { - return null; - } - // override this method to use a custom onclick listener - protected AdapterView.OnItemClickListener getOnItemClickListener() { - return null; - } - - protected void displayMapItems() { - Log.d(TAG,"displayMapItems()"); - ArrayAdapter arrayAdapter = this.getMapItemAdapter(); - mapListView.setAdapter(arrayAdapter); - - if (mapView != null) { - mapView.addMapItemList(this.mapItems, true); - } - - mapListView.setOnItemClickListener(this.getOnItemClickListener()); - toggleMap(); - } - - // Override this method to get map items - protected void viewMapItem(int mapItemIndex) {} - -} \ No newline at end of file diff --git a/app/src/main/java/edu/mit/mitmobile2/qrreader/QrreaderActivity.java b/app/src/main/java/edu/mit/mitmobile2/qrreader/QrreaderActivity.java deleted file mode 100644 index 6a49b7390..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/qrreader/QrreaderActivity.java +++ /dev/null @@ -1,17 +0,0 @@ -package edu.mit.mitmobile2.qrreader; - -import edu.mit.mitmobile2.MITMainActivity; -import edu.mit.mitmobile2.R; - -import android.os.Bundle; - -public class QrreaderActivity extends MITMainActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - this.setContentLayoutId(R.layout.content_qrreader); - super.onCreate(savedInstanceState); - //setContentView(R.layout.activity_qrreader); - } - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/shuttles/activities/ShuttlesActivity.java b/app/src/main/java/edu/mit/mitmobile2/shuttles/activities/ShuttlesActivity.java deleted file mode 100644 index b32ca564a..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/shuttles/activities/ShuttlesActivity.java +++ /dev/null @@ -1,390 +0,0 @@ -package edu.mit.mitmobile2.shuttles.activities; - -import android.app.AlertDialog; -import android.content.ActivityNotFoundException; -import android.content.ContentResolver; -import android.content.DialogInterface; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.Loader; -import android.support.v4.widget.SwipeRefreshLayout; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.LinearLayout; -import android.widget.ListView; -import android.widget.RelativeLayout; -import android.widget.Toast; - -import java.util.ArrayList; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.ButterKnife; -import butterknife.InjectView; -import edu.mit.mitmobile2.Constants; -import edu.mit.mitmobile2.DBAdapter; -import edu.mit.mitmobile2.MITMainActivity; -import edu.mit.mitmobile2.MitMobileApplication; -import edu.mit.mitmobile2.PreferenceUtils; -import edu.mit.mitmobile2.R; -import edu.mit.mitmobile2.Schema; -import edu.mit.mitmobile2.shuttles.MITShuttlesProvider; -import edu.mit.mitmobile2.shuttles.callbacks.ShuttleAdapterCallback; -import edu.mit.mitmobile2.shuttles.utils.ShuttlesDatabaseHelper; -import edu.mit.mitmobile2.shuttles.adapter.MITShuttleAdapter; -import edu.mit.mitmobile2.shuttles.model.MitMiniShuttleRoute; -import edu.mit.mitmobile2.shared.logging.LoggingManager.Timber; - -public class ShuttlesActivity extends MITMainActivity implements ShuttleAdapterCallback, LoaderManager.LoaderCallbacks { - - int contentLayoutId = R.layout.content_shuttles; - - private static final int PREDICTIONS_PERIOD = 20000; - private static final int PREDICTIONS_TIMER_OFFSET = 10000; - private static final int PREDICTIONS_TIMEOUT = 60000; - private static final int ROUTES_TIMEOUT = 80000; - - private int loopCount = 0; - private boolean immediatelyReloadPredictions = false; - private boolean blockServerCalls = false; - - private MITShuttleAdapter mitShuttleAdapter; - private ArrayList mitShuttleRoutes = new ArrayList<>(); - - @InjectView(R.id.shuttle_refresh_layout) - SwipeRefreshLayout shuttleRefreshLayout; - @InjectView(R.id.shuttle_listview) - ListView shuttleListView; - - private static Timer timer; - - @Override - protected void onCreate(Bundle savedInstanceState) { - this.setContentLayoutId(R.layout.content_shuttles); - super.onCreate(savedInstanceState); - - ButterKnife.inject(this); - - if (savedInstanceState != null) { - mitShuttleRoutes = savedInstanceState.getParcelableArrayList("routes"); - mitShuttleAdapter = new MITShuttleAdapter(this, mitShuttleRoutes, null); - } else { - mitShuttleAdapter = new MITShuttleAdapter(this, new ArrayList(), null); - } - shuttleListView.setAdapter(mitShuttleAdapter); - initialShuttleView(); - - shuttleRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - shuttleRefreshLayout.setRefreshing(true); - updateAllRoutes(); - immediatelyReloadPredictions = true; - loopCount = 0; - } - }); - - getSupportLoaderManager().initLoader(0, null, this); - } - - private void loadCursor() { - Cursor cursor = getContentResolver().query(MITShuttlesProvider.ALL_ROUTES_URI, Schema.Route.ALL_COLUMNS, null, null, null); - - List routes = new ArrayList<>(); - ShuttlesDatabaseHelper.generateMiniRouteObjects(routes, cursor); - cursor.close(); - - if (routes.size() > 0) { - routes = sortRoutesByStatus(routes); - } - - mitShuttleAdapter.updateListItems(routes); - } - - private void checkStatusOfDatabase() { - long routesTimestamp = PreferenceUtils.getDefaultSharedPreferencesMultiProcess(this).getLong(Constants.ROUTES_TIMESTAMP, 0); - long diff = System.currentTimeMillis() - routesTimestamp; - if (diff < ROUTES_TIMEOUT) { - long predictionsTimestamp = PreferenceUtils.getDefaultSharedPreferencesMultiProcess(this).getLong(Constants.PREDICTIONS_TIMESTAMP, 0); - if ((System.currentTimeMillis() - predictionsTimestamp) < PREDICTIONS_TIMEOUT) { - // load route info WITH preference data - loadCursor(); - Timber.d("Predictions OK"); - } else { - ShuttlesDatabaseHelper.clearAllPredictions(); - loadCursor(); - updatePredictions(); - Timber.d("Routes OK, refreshing predictions"); - } - } else { - DBAdapter.getInstance().flushStaleData(); - loadCursor(); - updateAllRoutes(); - immediatelyReloadPredictions = true; - Timber.d("Refreshing routes"); - } - } - - private void startTimerTask() { - timer.schedule(new TimerTask() { - @Override - public void run() { - if (mitShuttleAdapter.getCount() == 0) { - return; - } - - if (timer == null) { - return; - } - - if (blockServerCalls) { - return; - } - - Timber.d("Timer fired"); - - if (loopCount == 5) { - updateAllRoutes(); - immediatelyReloadPredictions = true; - } else { - updatePredictions(); - } - - loopCount++; - loopCount = loopCount % 6; - } - }, PREDICTIONS_TIMER_OFFSET, PREDICTIONS_PERIOD); - } - - private void updatePredictions() { - Bundle bundle = new Bundle(); - bundle.putString(Constants.Shuttles.MODULE_KEY, Constants.SHUTTLES); - bundle.putString(Constants.Shuttles.PATH_KEY, Constants.Shuttles.PREDICTIONS_PATH); - bundle.putString(Constants.Shuttles.URI_KEY, MITShuttlesProvider.PREDICTIONS_URI.toString()); - - String mitTuples = mitShuttleAdapter.getRouteStopTuples("mit"); - String crTuples = mitShuttleAdapter.getRouteStopTuples("charles-river"); - - bundle.putString(Constants.Shuttles.MIT_TUPLES_KEY, mitTuples); - bundle.putString(Constants.Shuttles.CR_TUPLES_KEY, crTuples); - - // FORCE THE SYNC - bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); - bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); - - Timber.d("Requesting Predictions"); - - ContentResolver.requestSync(MitMobileApplication.mAccount, MitMobileApplication.AUTHORITY, bundle); - blockServerCalls = true; - } - - private void updateAllRoutes() { - Bundle bundle = new Bundle(); - bundle.putString(Constants.Shuttles.MODULE_KEY, Constants.SHUTTLES); - bundle.putString(Constants.Shuttles.PATH_KEY, Constants.Shuttles.ALL_ROUTES_PATH); - bundle.putString(Constants.Shuttles.URI_KEY, MITShuttlesProvider.ALL_ROUTES_URI.toString()); - - // FORCE THE SYNC - bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); - bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); - - // Request All Routes info - ContentResolver.requestSync(MitMobileApplication.mAccount, MitMobileApplication.AUTHORITY, bundle); - blockServerCalls = true; - } - - private void initialShuttleView() { - View footer = ((LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE)) - .inflate(R.layout.shuttle_list_footer, null, false); - initialListViewFooter(footer); - shuttleListView.addFooterView(footer); - } - - public List sortRoutesByStatus(List routes) { - List shuttleRouteStatusInService = new ArrayList<>(); - List shuttleRouteStatusNotInservice = new ArrayList<>(); - List shuttleRouteStatusUnknown = new ArrayList<>(); - - for (MitMiniShuttleRoute route : routes) { - if (route.isPredictable()) { - shuttleRouteStatusInService.add(route); - } else if (route.isScheduled()) { - shuttleRouteStatusUnknown.add(route); - } else { - shuttleRouteStatusNotInservice.add(route); - } - } - - routes.clear(); - - for (MitMiniShuttleRoute shuttleRoute : shuttleRouteStatusInService) { - routes.add(shuttleRoute); - } - for (MitMiniShuttleRoute shuttleRoute : shuttleRouteStatusUnknown) { - routes.add(shuttleRoute); - } - for (MitMiniShuttleRoute shuttleRoute : shuttleRouteStatusNotInservice) { - routes.add(shuttleRoute); - } - - for (MitMiniShuttleRoute shuttleRoute : routes) { - mitShuttleRoutes.add(shuttleRoute); - } - - return routes; - } - - public void initialListViewFooter(View footer) { - final RelativeLayout parkOffice = (RelativeLayout) footer.findViewById(R.id.park_office); - final RelativeLayout saferide = (RelativeLayout) footer.findViewById(R.id.saferide); - final LinearLayout realTimeBusArrivals = (LinearLayout) footer.findViewById(R.id.real_time_bus_arrivals); - final LinearLayout realTimeTrainArribals = (LinearLayout) footer.findViewById(R.id.real_time_train_arrivals); - final LinearLayout googleTransit = (LinearLayout) footer.findViewById(R.id.google_transit); - - parkOffice.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - phoneCallDialog(getResources().getString(R.string.parking_office_number)); - } - }); - saferide.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - phoneCallDialog(getResources().getString(R.string.saferide_number)); - } - }); - realTimeBusArrivals.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - openMBTAUrl(getResources().getString(R.string.real_time_bus_url)); - } - }); - realTimeTrainArribals.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - openMBTAUrl(getResources().getString(R.string.real_time_train_url)); - } - }); - googleTransit.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - openMBTAUrl(getResources().getString(R.string.real_time_google_transit_url)); - } - }); - } - - public void phoneCallDialog(final String phoneNumber) { - String[] splittedPhoneNumber = phoneNumber.split("\\."); - new AlertDialog.Builder(this) - .setMessage("Call 1 (" + splittedPhoneNumber[0] + ")" + splittedPhoneNumber[1] + "-" + splittedPhoneNumber[2] + "?") - .setPositiveButton(getResources().getString(R.string.ok_button), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - setPhoneCall(phoneNumber); - } - }) - .setNegativeButton(getResources().getString(R.string.cancel_button), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }) - .show(); - } - - public void setPhoneCall(String phoneNumber) { - String uri = "tel:" + phoneNumber.trim(); - Intent intent = new Intent(Intent.ACTION_CALL); - intent.setData(Uri.parse(uri)); - startActivity(intent); - } - - public void openMBTAUrl(String url) { - try { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, "No application can handle this request. " + - "Please install a map app.", Toast.LENGTH_SHORT).show(); - e.printStackTrace(); - } - } - - @Override - public void shuttleRouteClick(final String routeId) { - Intent intent = new Intent(this, ShuttleRouteActivity.class); - intent.putExtra(Constants.ROUTE_ID_KEY, routeId); - startActivity(intent); - } - - @Override - public void shuttleStopClick(String routeId, String stopId) { - Intent intent = new Intent(this, ShuttleStopActivity.class); - intent.putExtra(Constants.ROUTE_ID_KEY, routeId); - intent.putExtra(Constants.STOP_ID_KEY, stopId); - startActivity(intent); - } - - @Override - public Loader onCreateLoader(int id, Bundle args) { - return null; - } - - @Override - public void onLoadFinished(Loader loader, Cursor data) { - if (data.getCount() == 0) { - return; - } - - Timber.d("Notified!"); - blockServerCalls = false; - - if (!immediatelyReloadPredictions) { - List routes = new ArrayList<>(); - ShuttlesDatabaseHelper.generateMiniRouteObjects(routes, data); - routes = sortRoutesByStatus(routes); - mitShuttleAdapter.updateListItems(routes); - - runOnUiThread(new Runnable() { - @Override - public void run() { - if (shuttleRefreshLayout.isRefreshing()) { - shuttleRefreshLayout.setRefreshing(false); - } - } - }); - } else { - immediatelyReloadPredictions = false; - updatePredictions(); - } - } - - @Override - public void onLoaderReset(Loader loader) { - } - - @Override - protected void onResume() { - super.onResume(); - checkStatusOfDatabase(); - timer = new Timer(); - startTimerTask(); - } - - @Override - protected void onPause() { - timer.cancel(); - timer.purge(); - timer = null; - super.onPause(); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putParcelableArrayList("routes", mitShuttleRoutes); - } -} From 9c60fa3eee3971fe17584cbac2809460941a9cf8 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Mon, 8 Jun 2015 14:21:59 -0400 Subject: [PATCH 03/10] Added XML library and objects for Library login auth --- app/build.gradle | 5 + app/src/main/assets/api.json | 6 ++ .../java/edu/mit/mitmobile2/Constants.java | 1 + .../java/edu/mit/mitmobile2/MITActivity.java | 12 ++- .../edu/mit/mitmobile2/RetrofitManager.java | 67 ++++++++++--- .../libraries/LibrariesFragment.java | 4 +- .../mitmobile2/libraries/LibraryManager.java | 60 ++++++++++-- .../activities/LibraryLoginActivity.java | 59 +++++++++++- .../libraries/model/AuthRequest.java | 95 +++++++++++++++++++ .../libraries/model/EcpRequest.java | 63 ++++++++++++ .../mitmobile2/libraries/model/Issuer.java | 36 +++++++ .../model/MITLibrariesXmlObject.java | 33 +++++++ .../libraries/model/NameIdPolicy.java | 24 +++++ .../libraries/model/PaosRequest.java | 61 ++++++++++++ .../libraries/model/RelayState.java | 45 +++++++++ .../mitmobile2/libraries/model/XmlBody.java | 22 +++++ .../mitmobile2/libraries/model/XmlHeader.java | 44 +++++++++ .../libraries/model/XmlRequest.java | 84 ++++++++++++++++ 18 files changed, 695 insertions(+), 26 deletions(-) create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java diff --git a/app/build.gradle b/app/build.gradle index c78667402..99be67b2d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,4 +47,9 @@ dependencies { compile 'com.koushikdutta.ion:ion:2.+' compile 'com.github.johnkil.android-robototextview:robototextview:2.4.0' compile 'com.jpardogo.materialtabstrip:library:1.0.9' + compile('com.squareup.retrofit:converter-simplexml:1.9.0') { + exclude(group: 'xpp3', module: 'xpp3') + exclude(group: 'stax', module: 'stax-api') + exclude(group: 'stax', module: 'stax') + } } diff --git a/app/src/main/assets/api.json b/app/src/main/assets/api.json index 15b52f7ee..5434e589c 100644 --- a/app/src/main/assets/api.json +++ b/app/src/main/assets/api.json @@ -82,5 +82,11 @@ "test": "http://mobile-test.mit.edu/apis/secure/", "prod": "http://m.mit.edu/apis/secure/", "manager": "edu.mit.mitmobile2.libraries.LibraryManager" + }, + "login": { + "dev": "https://idp.mit.edu/idp/profile/SAML2/SOAP/ECP", + "test": "https://idp.mit.edu/idp/profile/SAML2/SOAP/ECP", + "prod": "https://idp.mit.edu/idp/profile/SAML2/SOAP/ECP", + "manager": "edu.mit.mitmobile2.libraries.LibraryManager" } } \ No newline at end of file diff --git a/app/src/main/java/edu/mit/mitmobile2/Constants.java b/app/src/main/java/edu/mit/mitmobile2/Constants.java index 700b5b02d..da61c7526 100644 --- a/app/src/main/java/edu/mit/mitmobile2/Constants.java +++ b/app/src/main/java/edu/mit/mitmobile2/Constants.java @@ -33,6 +33,7 @@ public class Constants { public static final String MAP = "map"; public static final String LIBRARIES = "libraries"; public static final String SECURE = "secure"; + public static final String LOGIN = "login"; public static class Shuttles { public static final String ALL_ROUTES_PATH = "/routes"; diff --git a/app/src/main/java/edu/mit/mitmobile2/MITActivity.java b/app/src/main/java/edu/mit/mitmobile2/MITActivity.java index 408470c78..5f543d834 100644 --- a/app/src/main/java/edu/mit/mitmobile2/MITActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/MITActivity.java @@ -19,6 +19,7 @@ import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; + import edu.mit.mitmobile2.shared.SharedActivityManager; import edu.mit.mitmobile2.shuttles.MITShuttlesProvider; import edu.mit.mitmobile2.shared.logging.LoggingManager.Timber; @@ -95,10 +96,13 @@ public void onLocationChanged(Location location) { private void setLocation(Location location) { this.location = location; ContentValues cv = new ContentValues(); - cv.put(Schema.Location.LATITUDE, location.getLatitude()); - cv.put(Schema.Location.LONGITUDE, location.getLongitude()); - cv.put(Schema.Location.ID_COL, 1); - getContentResolver().insert(MITShuttlesProvider.LOCATION_URI, cv); + + if (location != null) { + cv.put(Schema.Location.LATITUDE, location.getLatitude()); + cv.put(Schema.Location.LONGITUDE, location.getLongitude()); + cv.put(Schema.Location.ID_COL, 1); + getContentResolver().insert(MITShuttlesProvider.LOCATION_URI, cv); + } } diff --git a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java index e0dfc5a35..82bb24262 100644 --- a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java @@ -1,5 +1,15 @@ package edu.mit.mitmobile2; +import android.text.TextUtils; +import android.util.Base64; + +import com.squareup.okhttp.OkHttpClient; + +import org.simpleframework.xml.Serializer; +import org.simpleframework.xml.convert.AnnotationStrategy; +import org.simpleframework.xml.core.Persister; +import org.simpleframework.xml.strategy.Strategy; + import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashMap; @@ -10,9 +20,12 @@ import retrofit.Endpoint; import retrofit.RequestInterceptor; import retrofit.RestAdapter; +import retrofit.client.OkClient; +import retrofit.converter.SimpleXMLConverter; public abstract class RetrofitManager { - public static final class FluentParamMap extends FluentMap {} + public static final class FluentParamMap extends FluentMap { + } private static class MitEndpoint implements Endpoint { @@ -45,6 +58,9 @@ public String getName() { protected static HashMap paths; protected static HashMap queries; + protected static String userName; + protected static String password; + private static MitEndpoint mitEndpoint = MitEndpoint.create(); private static RequestInterceptor requestInterceptor = new RequestInterceptor() { @@ -63,6 +79,12 @@ public void intercept(RequestFacade request) { } queries.clear(); } + + if (!TextUtils.isEmpty(userName) && !TextUtils.isEmpty(password)) { + String credentials = userName + ":" + password; + String base64EncodedCredentials = new String(Base64.encode(credentials.getBytes(), Base64.NO_WRAP)); + request.addHeader("Authorization", "Basic " + base64EncodedCredentials); + } } }; @@ -78,6 +100,24 @@ public void log(String message) { .setLogLevel(RestAdapter.LogLevel.FULL) .build(); + static Strategy strategy = new AnnotationStrategy(); + static Serializer serializer = new Persister(strategy); + static OkHttpClient okHttpClient = new OkHttpClient(); + + protected static RestAdapter LOGIN_AUTH_ADAPTER = new RestAdapter.Builder() + .setEndpoint(mitEndpoint) + .setLog(new RestAdapter.Log() { + @Override + public void log(String message) { + Timber.d(message); + } + }) + .setRequestInterceptor(requestInterceptor) + .setLogLevel(RestAdapter.LogLevel.FULL) + .setClient(new OkClient(okHttpClient)) + .setConverter(new SimpleXMLConverter(serializer)) + .build(); + public static void changeEndpoint(String url) { if (mitEndpoint.getUrl() != null) { if (!(mitEndpoint.getUrl() + "/").equals(url)) { @@ -91,12 +131,13 @@ public static void changeEndpoint(String url) { /** * Similar to {@see buildMethodName} this method returns the Service Interface method handling the requested * call via direct Annotation matching. - * + *

* If this call falls to find an expected method (this should -never- happen) we fallback to the old logic. - * @param klass The class provided as the Interface handler. - * @param path The path constant of the method we are looking for. - * @param pathParams ??? This appears to be unused but we take it as input since the older call does. - * @param queryParams ??? This appears to be unused but we take it as input since the older call does. + * + * @param klass The class provided as the Interface handler. + * @param path The path constant of the method we are looking for. + * @param pathParams ??? This appears to be unused but we take it as input since the older call does. + * @param queryParams ??? This appears to be unused but we take it as input since the older call does. * @param parameterTypes Expected parameter types to match against the method we are looking for. * @return A method if found for the specified web API call path. */ @@ -111,19 +152,19 @@ protected static Method findMethodViaDirectReflection(Class klass, String pat for (Method method : klass.getMethods()) { if (!Arrays.equals(method.getParameterTypes(), parameterTypes)) continue; - retrofit.http.GET annotationG = method.getAnnotation(retrofit.http.GET.class); - retrofit.http.POST annotationPo = method.getAnnotation(retrofit.http.POST.class); - retrofit.http.PUT annotationPu = method.getAnnotation(retrofit.http.PUT.class); + retrofit.http.GET annotationG = method.getAnnotation(retrofit.http.GET.class); + retrofit.http.POST annotationPo = method.getAnnotation(retrofit.http.POST.class); + retrofit.http.PUT annotationPu = method.getAnnotation(retrofit.http.PUT.class); retrofit.http.PATCH annotationPa = method.getAnnotation(retrofit.http.PATCH.class); - retrofit.http.HEAD annotationH = method.getAnnotation(retrofit.http.HEAD.class); + retrofit.http.HEAD annotationH = method.getAnnotation(retrofit.http.HEAD.class); retrofit.http.DELETE annotationD = method.getAnnotation(retrofit.http.DELETE.class); - if (annotationG != null && annotationG.value().equals(path)) return method; + if (annotationG != null && annotationG.value().equals(path)) return method; if (annotationPo != null && annotationPo.value().equals(path)) return method; if (annotationPu != null && annotationPu.value().equals(path)) return method; if (annotationPa != null && annotationPa.value().equals(path)) return method; - if (annotationH != null && annotationH.value().equals(path)) return method; - if (annotationD != null && annotationD.value().equals(path)) return method; + if (annotationH != null && annotationH.value().equals(path)) return method; + if (annotationD != null && annotationD.value().equals(path)) return method; if (method.getName().equals(fallbackMethodName)) fallbackMethod = method; } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java b/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java index fc1ca658f..36756fee1 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/LibrariesFragment.java @@ -23,7 +23,7 @@ import edu.mit.mitmobile2.MitMobileApplication; import edu.mit.mitmobile2.OttoBusEvent; import edu.mit.mitmobile2.R; -import edu.mit.mitmobile2.libraries.activities.AccountActivity; +import edu.mit.mitmobile2.libraries.activities.LibraryLoginActivity; import edu.mit.mitmobile2.libraries.adapter.LibraryLinksAdapter; import edu.mit.mitmobile2.libraries.model.MITLibrariesLink; import retrofit.Callback; @@ -91,7 +91,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) headerView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(getActivity(), AccountActivity.class); + Intent intent = new Intent(getActivity(), LibraryLoginActivity.class); startActivity(intent); } }); diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java index 8a615d306..145f52a42 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java @@ -17,15 +17,19 @@ import edu.mit.mitmobile2.libraries.model.MITLibrariesMITIdentity; import edu.mit.mitmobile2.libraries.model.MITLibrariesUser; import edu.mit.mitmobile2.libraries.model.MITLibrariesWorldcatItem; +import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; import edu.mit.mitmobile2.shared.logging.LoggingManager; import retrofit.Callback; +import retrofit.client.Response; +import retrofit.http.Body; import retrofit.http.GET; +import retrofit.http.Headers; +import retrofit.http.POST; +import retrofit.mime.TypedOutput; -/** - * Created by grmartin on 5/7/15. - */ public class LibraryManager extends RetrofitManager { private static final MitLibraryService MIT_LIBRARY_SERVICE = MIT_REST_ADAPTER.create(MitLibraryService.class); + public static final MitSecureService MIT_SECURE_SERVICE = LOGIN_AUTH_ADAPTER.create(MitSecureService.class); private static final int LIBRARY_ITEMS_SEARCH_LIMIT = 20; @@ -33,9 +37,17 @@ public class LibraryManager extends RetrofitManager { public static void makeHttpCall(String apiType, String path, HashMap pathParams, HashMap queryParams, Object callback) throws NoSuchFieldException, NoSuchMethodException, ClassNotFoundException, IllegalAccessException, InvocationTargetException { - Method m = findMethodViaDirectReflection(MitLibraryService.class, path, pathParams, queryParams, Callback.class); - LoggingManager.Timber.d("Method = " + m); - m.invoke(MIT_LIBRARY_SERVICE, callback); + if (apiType.equals(Constants.SECURE) && path.equals(Constants.Secure.SECURE_USER_PATH)) { + Method m = findMethodViaDirectReflection(MitSecureService.class, path, pathParams, queryParams, Callback.class); + LoggingManager.Timber.d("Method = " + m); + + m.invoke(MIT_SECURE_SERVICE, callback); + } else { + Method m = findMethodViaDirectReflection(MitLibraryService.class, path, pathParams, queryParams, Callback.class); + LoggingManager.Timber.d("Method = " + m); + + m.invoke(MIT_LIBRARY_SERVICE, callback); + } } @SuppressWarnings("unused") @@ -113,6 +125,27 @@ public static LibraryManagerCall getIdentity(Activity activity, Callback callback) { + LibraryManagerCallWrapper returnValue = new LibraryManagerCallWrapper<>(new MITAPIClient(activity), callback); + + returnValue.getClient().get(Constants.SECURE, Constants.Secure.SECURE_USER_PATH, null, null, returnValue); + + return returnValue; + } + + public static LibraryManagerCall loginUser(Activity activity, Callback callback) { + LibraryManagerCallWrapper returnValue = new LibraryManagerCallWrapper<>(new MITAPIClient(activity), callback); + + returnValue.getClient().get(Constants.LOGIN, "/", null, null, returnValue); + + return returnValue; + } + + public static void setUsernameAndPassword(String username, String password) { + RetrofitManager.userName = username; + RetrofitManager.password = password; + } + /* POST requests */ public interface MitLibraryService { @@ -138,6 +171,21 @@ public interface MitLibraryService { void _getuser(Callback callback); } + public interface MitSecureService { + @Headers({ + "Accept: application/vnd.paos+xml,*/*", + "PAOS: ver=\"urn:liberty:paos:2003-08\"; \"urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp\";" + }) + @GET(Constants.Secure.SECURE_USER_PATH) + void _getsecure(Callback callback); + + @Headers({ + "Content-Type: application/vnd.paos+xml" + }) + @POST("/") + void _postloginuser(@Body TypedOutput obj, Callback callback); + } + public static class LibraryManagerCallWrapper extends MITAPIClient.ApiCallWrapper implements LibraryManagerCall, Callback { public LibraryManagerCallWrapper(MITAPIClient client, Callback callback) { super(client, callback); diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index 5309c3791..35eb13926 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -5,9 +5,23 @@ import android.widget.EditText; import android.widget.Switch; +import java.util.List; +import java.util.Objects; + +import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import edu.mit.mitmobile2.R; +import edu.mit.mitmobile2.libraries.LibraryManager; +import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; +import edu.mit.mitmobile2.libraries.model.RelayState; +import edu.mit.mitmobile2.libraries.model.XmlHeader; +import edu.mit.mitmobile2.shared.logging.LoggingManager; +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Header; +import retrofit.client.Response; +import retrofit.converter.SimpleXMLConverter; public class LibraryLoginActivity extends AppCompatActivity { @@ -25,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_library_login); - + ButterKnife.inject(this); } @OnClick(R.id.login_button) @@ -39,6 +53,49 @@ void login() { if (saveLoginSwitch.isChecked()) { // TODO: Save login info in AccountUtils? } + + LibraryManager.getLoginAuth(this, new Callback() { + @Override + public void success(MITLibrariesXmlObject mitLibrariesXmlObject, Response response) { + LoggingManager.Timber.d("Success!"); + List

headers = response.getHeaders(); + for (Header header : headers) { + if (header.getName().equals("Content-Type")) { + if (header.getValue().equals("application/vnd.paos+xml")) { + // Continue with auth + postUserLoginInfo(mitLibrariesXmlObject.getHeader().getRelayState(), mitLibrariesXmlObject); + } + } + } + } + + @Override + public void failure(RetrofitError error) { + LoggingManager.Timber.e(error.getMessage()); + } + }); + + + } + + private void postUserLoginInfo(RelayState relayState, MITLibrariesXmlObject object) { + LibraryManager.changeEndpoint("https://idp.mit.edu/idp/profile/SAML2/SOAP/ECP/"); + LibraryManager.setUsernameAndPassword("mitlibrarytest@gmail.com", "readingrainbow22"); + + object.setHeader(null); + + LibraryManager.MIT_SECURE_SERVICE._postloginuser(new SimpleXMLConverter().toBody(object), new Callback() { + @Override + public void success(Response response, Response response2) { + LoggingManager.Timber.d("Success!"); + } + + @Override + public void failure(RetrofitError error) { + LoggingManager.Timber.e(error.getMessage()); + } + }); + } } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java new file mode 100644 index 000000000..baa2997a5 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java @@ -0,0 +1,95 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(reference = "urn:oasis:names:tc:SAML:2.0:protocol", prefix = "samlp") +@Root(name = "AuthnRequest") +public class AuthRequest { + + @Attribute(name = "ProtocolBinding") + private String protocolBinding; + + @Attribute(name = "ID") + private String id; + + @Attribute(name = "AssertionConsumerServiceURL") + private String consumerServiceUrl; + + @Attribute(name = "Version") + private String version; + + @Attribute(name = "IssueInstant") + private String issueInstant; + + @Element(name = "Issuer") + @Namespace(prefix = "saml", reference = "urn:oasis:names:tc:SAML:2.0:assertion") + Issuer issuer; + + @Element(name = "NameIDPolicy") + @Namespace(prefix = "samlp", reference = "urn:oasis:names:tc:SAML:2.0:protocol") + NameIdPolicy nameIdPolicy; + + public String getProtocolBinding() { + return protocolBinding; + } + + public void setProtocolBinding(String ProtocolBinding) { + this.protocolBinding = ProtocolBinding; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getConsumerServiceUrl() { + return consumerServiceUrl; + } + + public void setConsumerServiceUrl(String AssertionConsumerServiceURL) { + this.consumerServiceUrl = AssertionConsumerServiceURL; + } + + public String getVersion() { + return version; + } + + public void setVersion(String Version) { + this.version = Version; + } + + public String getIssueInstant() { + return issueInstant; + } + + public void setIssueInstant(String IssueInstant) { + this.issueInstant = IssueInstant; + } + + public Issuer getIssuer() { + return issuer; + } + + public void setIssuer(Issuer issuer) { + this.issuer = issuer; + } + + public NameIdPolicy getNameIdPolicy() { + return nameIdPolicy; + } + + public void setNameIdPolicy(NameIdPolicy nameIdPolicy) { + this.nameIdPolicy = nameIdPolicy; + } + + @Override + public String toString() { + return "ClassPojo [protocolBinding = " + protocolBinding + ", id = " + id + ", consumerServiceUrl = " + consumerServiceUrl + ", version = " + version + ", issueInstant = " + issueInstant + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java new file mode 100644 index 000000000..85caecdab --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java @@ -0,0 +1,63 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") +@Root(name = "Request") +public class EcpRequest { + + @Attribute(name = "IsPassive") + private String isPassive; + + @Namespace(prefix = "S") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "S") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + @Namespace(prefix = "saml") + @Element(name = "saml:Issuer") + Issuer issuer; + + public String getIsPassive() { + return isPassive; + } + + public void setIsPassive(String IsPassive) { + this.isPassive = IsPassive; + } + + public Issuer getIssuer() { + return issuer; + } + + public void setIssuer(Issuer issuer) { + this.issuer = issuer; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + @Override + public String toString() { + return "ClassPojo [isPassive = " + isPassive + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java new file mode 100644 index 000000000..fffce324d --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java @@ -0,0 +1,36 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Text; + +@Root(name = "saml:Issuer") +public class Issuer { + + @Attribute(required = false) + private String content; + + @Text + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @Override + public String toString() { + return "ClassPojo [content = " + content + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java new file mode 100644 index 000000000..3080adb1d --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java @@ -0,0 +1,33 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/") +@Root(name = "Envelope") +public class MITLibrariesXmlObject { + + @Element(name = "Header", required = false) + XmlHeader header; + + @Element(name = "Body") + XmlBody body; + + public XmlHeader getHeader() { + return header; + } + + public void setHeader(XmlHeader header) { + this.header = header; + } + + public XmlBody getBody() { + return body; + } + + public void setBody(XmlBody body) { + this.body = body; + } + +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java new file mode 100644 index 000000000..5faa4ad01 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java @@ -0,0 +1,24 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Root; + +@Root(name = "samlp:NameIDPolicy") +public class NameIdPolicy { + + @Attribute(name = "AllowCreate") + private String allowCreate; + + public String getAllowCreate() { + return allowCreate; + } + + public void setAllowCreate(String AllowCreate) { + this.allowCreate = AllowCreate; + } + + @Override + public String toString() { + return "ClassPojo [allowCreate = " + allowCreate + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java new file mode 100644 index 000000000..b22f7c60d --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java @@ -0,0 +1,61 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Attribute; + +@Namespace(prefix = "paos", reference = "urn:liberty:paos:2003-08") +@Root(name = "Request") +public class PaosRequest { + + @Attribute + private String service; + + @Attribute + private String responseConsumerURL; + + @Namespace(prefix = "S") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "S") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getResponseConsumerURL() { + return responseConsumerURL; + } + + public void setResponseConsumerURL(String responseConsumerURL) { + this.responseConsumerURL = responseConsumerURL; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + @Override + public String toString() { + return "ClassPojo [service = " + service + ", responseConsumerURL = " + responseConsumerURL + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java new file mode 100644 index 000000000..54cf637d0 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java @@ -0,0 +1,45 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Text; + +@Root(name = "ecp:RelayState") +public class RelayState { + + @Namespace(prefix = "S") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "S") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + @Text + String value; + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java new file mode 100644 index 000000000..c93212054 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java @@ -0,0 +1,22 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "S", reference = "http://schemas.xmlsoap.org/soap/envelope/") +@Root(name = "Body") +public class XmlBody { + + @Element(name = "AuthnRequest") + @Namespace(prefix = "samlp", reference = "urn:oasis:names:tc:SAML:2.0:protocol") + AuthRequest authRequest; + + public AuthRequest getAuthRequest() { + return authRequest; + } + + public void setAuthRequest(AuthRequest authRequest) { + this.authRequest = authRequest; + } +} \ No newline at end of file diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java new file mode 100644 index 000000000..30db1cd07 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java @@ -0,0 +1,44 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.ElementList; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.NamespaceList; +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Text; + +import java.util.List; + +@NamespaceList( + { + @Namespace(prefix = "paos", reference = "urn:liberty:paos:2003-08"), + @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") + } +) +@Root(name = "Header") +public class XmlHeader { + + @ElementList(inline = true, entry = "Request") + List Request; + + @Namespace(reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") + @Element(name = "RelayState") + @Text + RelayState relayState; + + public RelayState getRelayState() { + return relayState; + } + + public void setRelayState(RelayState relayState) { + this.relayState = relayState; + } + + public List getRequest() { + return Request; + } + + public void setRequest(List request) { + Request = request; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java new file mode 100644 index 000000000..bc903b889 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java @@ -0,0 +1,84 @@ +package edu.mit.mitmobile2.libraries.model; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Root(strict = false) +public class XmlRequest { + + @Attribute(required = false) + private String service; + + @Attribute(required = false) + private String responseConsumerURL; + + @Namespace(prefix = "S") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "S") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getResponseConsumerURL() { + return responseConsumerURL; + } + + public void setResponseConsumerURL(String responseConsumerURL) { + this.responseConsumerURL = responseConsumerURL; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + @Attribute(name = "IsPassive", required = false) + private String isPassive; + + @Element(name = "Issuer", required = false) + @Namespace(prefix = "saml") + Issuer issuer; + + public String getIsPassive() { + return isPassive; + } + + public void setIsPassive(String IsPassive) { + this.isPassive = IsPassive; + } + + public Issuer getIssuer() { + return issuer; + } + + public void setIssuer(Issuer issuer) { + this.issuer = issuer; + } + + @Override + public String toString() { + return "ClassPojo [isPassive = " + isPassive + "]"; + } +} From 422a2c5482e5b4250c896d791cf0bc9d2e81e4e6 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Tue, 16 Jun 2015 09:11:49 -0400 Subject: [PATCH 04/10] Added XML Models for Touchstone login --- .../mitmobile2/libraries/LibraryManager.java | 12 ++- .../activities/LibraryLoginActivity.java | 42 +++++--- .../model/MITLibrariesXmlObject.java | 3 + .../model/xml/touchstone/CipherData.java | 12 +++ .../model/xml/touchstone/CipherValue.java | 9 ++ .../model/xml/touchstone/DigestMethod.java | 22 ++++ .../model/xml/touchstone/EcpResponse.java | 50 +++++++++ .../xml/touchstone/EncryptedAssertion.java | 13 +++ .../model/xml/touchstone/EncryptedData.java | 48 +++++++++ .../model/xml/touchstone/EncryptedKey.java | 44 ++++++++ .../xml/touchstone/EncryptionMethod.java | 36 +++++++ .../model/xml/touchstone/InnerKeyInfo.java | 11 ++ .../model/xml/touchstone/KeyInfo.java | 11 ++ .../xml/touchstone/MITTouchstoneResponse.java | 24 +++++ .../model/xml/touchstone/RelayState.java | 50 +++++++++ .../model/xml/touchstone/Saml2Issuer.java | 38 +++++++ .../model/xml/touchstone/Saml2pResponse.java | 100 ++++++++++++++++++ .../model/xml/touchstone/Saml2pStatus.java | 19 ++++ .../xml/touchstone/Saml2pStatusCode.java | 26 +++++ .../model/xml/touchstone/TouchstoneBody.java | 22 ++++ .../xml/touchstone/TouchstoneHeader.java | 34 ++++++ .../model/xml/touchstone/X509Certificate.java | 9 ++ .../model/xml/touchstone/X509Data.java | 13 +++ .../model/{ => xml/user}/AuthRequest.java | 2 +- .../model/{ => xml/user}/EcpRequest.java | 2 +- .../model/{ => xml/user}/Issuer.java | 2 +- .../model/{ => xml/user}/NameIdPolicy.java | 2 +- .../model/{ => xml/user}/PaosRequest.java | 2 +- .../model/{ => xml/user}/RelayState.java | 2 +- .../model/{ => xml/user}/XmlBody.java | 2 +- .../model/{ => xml/user}/XmlHeader.java | 2 +- .../model/{ => xml/user}/XmlRequest.java | 2 +- 32 files changed, 642 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java create mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/AuthRequest.java (97%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/EcpRequest.java (96%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/Issuer.java (92%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/NameIdPolicy.java (90%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/PaosRequest.java (96%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/RelayState.java (94%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/XmlBody.java (91%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/XmlHeader.java (95%) rename app/src/main/java/edu/mit/mitmobile2/libraries/model/{ => xml/user}/XmlRequest.java (97%) diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java index 145f52a42..b84c8fd3d 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java @@ -18,6 +18,7 @@ import edu.mit.mitmobile2.libraries.model.MITLibrariesUser; import edu.mit.mitmobile2.libraries.model.MITLibrariesWorldcatItem; import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; +import edu.mit.mitmobile2.libraries.model.xml.touchstone.MITTouchstoneResponse; import edu.mit.mitmobile2.shared.logging.LoggingManager; import retrofit.Callback; import retrofit.client.Response; @@ -25,7 +26,6 @@ import retrofit.http.GET; import retrofit.http.Headers; import retrofit.http.POST; -import retrofit.mime.TypedOutput; public class LibraryManager extends RetrofitManager { private static final MitLibraryService MIT_LIBRARY_SERVICE = MIT_REST_ADAPTER.create(MitLibraryService.class); @@ -182,8 +182,14 @@ public interface MitSecureService { @Headers({ "Content-Type: application/vnd.paos+xml" }) - @POST("/") - void _postloginuser(@Body TypedOutput obj, Callback callback); + @POST("/idp/profile/SAML2/SOAP/ECP") + void _postloginuser(@Body MITLibrariesXmlObject obj, Callback callback); + + @Headers({ + "Content-Type: application/vnd.paos+xml" + }) + @POST("/SAML2/ECP") + void _postloginuser2(@Body MITTouchstoneResponse obj, Callback callback); } public static class LibraryManagerCallWrapper extends MITAPIClient.ApiCallWrapper implements LibraryManagerCall, Callback { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index 35eb13926..66851fa83 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -6,7 +6,6 @@ import android.widget.Switch; import java.util.List; -import java.util.Objects; import butterknife.ButterKnife; import butterknife.InjectView; @@ -14,14 +13,13 @@ import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.libraries.LibraryManager; import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; -import edu.mit.mitmobile2.libraries.model.RelayState; -import edu.mit.mitmobile2.libraries.model.XmlHeader; +import edu.mit.mitmobile2.libraries.model.xml.touchstone.MITTouchstoneResponse; +import edu.mit.mitmobile2.libraries.model.xml.user.RelayState; import edu.mit.mitmobile2.shared.logging.LoggingManager; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Header; import retrofit.client.Response; -import retrofit.converter.SimpleXMLConverter; public class LibraryLoginActivity extends AppCompatActivity { @@ -47,8 +45,6 @@ void login() { String user = String.valueOf(username.getText()); String pwd = String.valueOf(password.getText()); - // TODO: Connect with touchstone somehow - if (saveLoginSwitch.isChecked()) { // TODO: Save login info in AccountUtils? @@ -74,20 +70,21 @@ public void failure(RetrofitError error) { LoggingManager.Timber.e(error.getMessage()); } }); - - } - private void postUserLoginInfo(RelayState relayState, MITLibrariesXmlObject object) { - LibraryManager.changeEndpoint("https://idp.mit.edu/idp/profile/SAML2/SOAP/ECP/"); + private void postUserLoginInfo(final RelayState relayState, MITLibrariesXmlObject object) { + LibraryManager.changeEndpoint("https://idp.touchstonenetwork.net/"); LibraryManager.setUsernameAndPassword("mitlibrarytest@gmail.com", "readingrainbow22"); object.setHeader(null); - LibraryManager.MIT_SECURE_SERVICE._postloginuser(new SimpleXMLConverter().toBody(object), new Callback() { + //TODO: Wrap Post call + + LibraryManager.MIT_SECURE_SERVICE._postloginuser(object, new Callback() { @Override - public void success(Response response, Response response2) { + public void success(MITTouchstoneResponse response, Response response2) { LoggingManager.Timber.d("Success!"); + postLoginAuth(relayState, response); } @Override @@ -98,4 +95,25 @@ public void failure(RetrofitError error) { } + private void postLoginAuth(RelayState relayState, MITTouchstoneResponse response) { + LibraryManager.changeEndpoint("https://mobile-dev.mit.edu/Shibboleth.sso/"); + + response.getHeader().setResponse(null); + response.getHeader().setRelayState(new edu.mit.mitmobile2.libraries.model.xml.touchstone.RelayState(relayState.getActor(), relayState.getMustUnderstand(), relayState.getValue())); + + //TODO: Wrap Post call + + LibraryManager.MIT_SECURE_SERVICE._postloginuser2(response, new Callback() { + @Override + public void success(Response response, Response response2) { + LoggingManager.Timber.d("Success!"); + } + + @Override + public void failure(RetrofitError error) { + LoggingManager.Timber.e(error.getMessage()); + } + }); + } + } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java index 3080adb1d..c2c18fa71 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java @@ -4,6 +4,9 @@ import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; +import edu.mit.mitmobile2.libraries.model.xml.user.XmlBody; +import edu.mit.mitmobile2.libraries.model.xml.user.XmlHeader; + @Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/") @Root(name = "Envelope") public class MITLibrariesXmlObject { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java new file mode 100644 index 000000000..c213758a7 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java @@ -0,0 +1,12 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class CipherData { + + @Element(name = "CipherValue") + @Namespace(prefix = "xenc") + CipherValue cipherValue; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java new file mode 100644 index 000000000..d7c2550b2 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java @@ -0,0 +1,9 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Text; + +public class CipherValue { + + @Text + String value; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java new file mode 100644 index 000000000..3d7852a72 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java @@ -0,0 +1,22 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; + +public class DigestMethod { + + @Attribute(name = "Algorithm") + private String algorithm; + + public String getAlgorithm() { + return algorithm; + } + + public void setAlgorithm(String algorithm) { + this.algorithm = algorithm; + } + + @Override + public String toString() { + return "ClassPojo [algorithm = " + algorithm + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java new file mode 100644 index 000000000..cbf8def1d --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java @@ -0,0 +1,50 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") +@Root(name = "Response") +public class EcpResponse { + + @Attribute(name = "AssertionConsumerServiceURL") + private String assertionConsumerServiceURL; + + @Namespace(prefix = "soap11") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "soap11") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + public String getAssertionConsumerServiceURL() { + return assertionConsumerServiceURL; + } + + public void setAssertionConsumerServiceURL(String AssertionConsumerServiceURL) { + this.assertionConsumerServiceURL = AssertionConsumerServiceURL; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + @Override + public String toString() { + return "ClassPojo [AssertionConsumerServiceURL = " + assertionConsumerServiceURL + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java new file mode 100644 index 000000000..66494888b --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java @@ -0,0 +1,13 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class EncryptedAssertion { + + @Element(name = "EncryptedData") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") + EncryptedData encryptedData; + +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java new file mode 100644 index 000000000..be828325f --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java @@ -0,0 +1,48 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class EncryptedData { + + @Attribute(name = "Type") + private String type; + + @Attribute(name = "Id") + private String id; + + @Element(name = "EncryptionMethod") + @Namespace(prefix = "xenc") + EncryptionMethod encryptionMethod; + + @Element(name = "KeyInfo") + @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") + KeyInfo keyInfo; + + @Element(name = "CipherData") + @Namespace(prefix = "xenc") + CipherData cipherData; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @Override + public String toString() { + return "ClassPojo [type = " + type + ", id = " + id + "]"; + } + +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java new file mode 100644 index 000000000..f4611c76b --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java @@ -0,0 +1,44 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class EncryptedKey { + + @Attribute(name = "Id") + private String id; + + @Element(name = "EncryptionMethod") + @Namespace(prefix = "xenc") + EncryptionMethod encryptionMethod; + + @Element(name = "KeyInfo") + @Namespace(prefix = "ds") + InnerKeyInfo keyInfo; + + @Element(name = "CipherData") + @Namespace(prefix = "xenc") + CipherData cipherData; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public EncryptionMethod getEncryptionMethod() { + return encryptionMethod; + } + + public void setEncryptionMethod(EncryptionMethod encryptionMethod) { + this.encryptionMethod = encryptionMethod; + } + + @Override + public String toString() { + return "ClassPojo [id = " + id + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java new file mode 100644 index 000000000..d62525d06 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java @@ -0,0 +1,36 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class EncryptionMethod { + + @Attribute(name = "Algorithm") + private String algorithm; + + @Element(name = "DigestMethod", required = false) + @Namespace(prefix = "ds") + DigestMethod digestMethod; + + public String getAlgorithm() { + return algorithm; + } + + public void setAlgorithm(String Algorithm) { + this.algorithm = Algorithm; + } + + public DigestMethod getDigestMethod() { + return digestMethod; + } + + public void setDigestMethod(DigestMethod digestMethod) { + this.digestMethod = digestMethod; + } + + @Override + public String toString() { + return "ClassPojo [algorithm = " + algorithm + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java new file mode 100644 index 000000000..49195eec8 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java @@ -0,0 +1,11 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Root; + +@Root(name = "KeyInfo") +public class InnerKeyInfo { + + @Element(name = "X509Data") + X509Data x509Data; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java new file mode 100644 index 000000000..0e3630465 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java @@ -0,0 +1,11 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class KeyInfo { + + @Element(name = "EncryptedKey") + @Namespace(prefix = "xenc") + EncryptedKey encryptedKey; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java new file mode 100644 index 000000000..308bf2eb5 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java @@ -0,0 +1,24 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class MITTouchstoneResponse { + + @Element(name = "Header") + @Namespace(prefix = "soap11") + TouchstoneHeader header; + + @Element(name = "Body") + @Namespace(prefix = "soap11") + TouchstoneBody touchstoneBody; + + public TouchstoneHeader getHeader() { + return header; + } + + public void setHeader(TouchstoneHeader header) { + this.header = header; + } + +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java new file mode 100644 index 000000000..b79c7a46b --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java @@ -0,0 +1,50 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Text; + +public class RelayState { + + + public RelayState(String actor, String mustUnderstand, String value) { + this.actor = actor; + this.mustUnderstand = mustUnderstand; + this.value = value; + } + + @Namespace(prefix = "soap11") + @Attribute(name = "actor") + private String actor; + + @Namespace(prefix = "soap11") + @Attribute(name = "mustUnderstand") + private String mustUnderstand; + + @Text + String value; + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getMustUnderstand() { + return mustUnderstand; + } + + public void setMustUnderstand(String mustUnderstand) { + this.mustUnderstand = mustUnderstand; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java new file mode 100644 index 000000000..e0a23f71c --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java @@ -0,0 +1,38 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Text; + +@Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") +@Root(name = "Issuer") +public class Saml2Issuer { + + @Text + private String value; + + @Attribute(name = "Format") + private String format; + + public String getContent() { + return value; + } + + public void setContent(String content) { + this.value = content; + } + + public String getFormat() { + return format; + } + + public void setFormat(String Format) { + this.format = Format; + } + + @Override + public String toString() { + return "ClassPojo [content = " + value + ", format = " + format + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java new file mode 100644 index 000000000..5358e23c9 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java @@ -0,0 +1,100 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "saml2p", reference = "urn:oasis:names:tc:SAML:2.0:protocol") +@Root(name = "Response") +public class Saml2pResponse { + + @Attribute(name = "ID") + private String id; + + @Attribute(name = "InResponseTo") + private String inResponseTo; + + @Attribute(name = "Version") + private String version; + + @Attribute(name = "IssueInstant") + private String issueInstant; + + @Attribute(name = "Destination") + private String destination; + + @Element(name = "Issuer") + @Namespace(prefix = "saml2") + Saml2Issuer issuer; + + @Element(name = "Status") + @Namespace(prefix = "saml2p") + Saml2pStatus status; + + @Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") + @Element(name = "EncryptedAssertion") + EncryptedAssertion encryptedAssertion; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInResponseTo() { + return inResponseTo; + } + + public void setInResponseTo(String InResponseTo) { + this.inResponseTo = InResponseTo; + } + + public String getVersion() { + return version; + } + + public void setVersion(String Version) { + this.version = Version; + } + + public String getIssueInstant() { + return issueInstant; + } + + public void setIssueInstant(String IssueInstant) { + this.issueInstant = IssueInstant; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String Destination) { + this.destination = Destination; + } + + public Saml2Issuer getIssuer() { + return issuer; + } + + public void setIssuer(Saml2Issuer issuer) { + this.issuer = issuer; + } + + public Saml2pStatus getStatus() { + return status; + } + + public void setStatus(Saml2pStatus status) { + this.status = status; + } + + @Override + public String toString() { + return "ClassPojo [id = " + id + ", inResponseTo = " + inResponseTo + ", version = " + version + ", issueInstant = " + issueInstant + ", destination = " + destination + "]"; + } + +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java new file mode 100644 index 000000000..418e21fec --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java @@ -0,0 +1,19 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +public class Saml2pStatus { + + @Element(name = "StatusCode") + @Namespace(prefix = "saml2p") + Saml2pStatusCode statusCode; + + public Saml2pStatusCode getStatusCode() { + return statusCode; + } + + public void setStatusCode(Saml2pStatusCode statusCode) { + this.statusCode = statusCode; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java new file mode 100644 index 000000000..e45ba8130 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java @@ -0,0 +1,26 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "saml2") +@Root(name = "StatusCode") +public class Saml2pStatusCode { + + @Attribute(name = "Value") + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return "ClassPojo [value = " + value + "]"; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java new file mode 100644 index 000000000..09f7246d7 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java @@ -0,0 +1,22 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "soap11") +@Root(name = "Body") +public class TouchstoneBody { + + @Element(name = "Response") + @Namespace(prefix = "saml2p", reference = "urn:oasis:names:tc:SAML:2.0:protocol") + Saml2pResponse response; + + public Saml2pResponse getResponse() { + return response; + } + + public void setResponse(Saml2pResponse response) { + this.response = response; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java new file mode 100644 index 000000000..e6bb7cbfe --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java @@ -0,0 +1,34 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; + +@Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/envelope/") +@Root(name = "Header") +public class TouchstoneHeader { + + @Element(name = "Response", required = false) + @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") + EcpResponse response; + + @Element(name = "RelayState", required = false) + @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") + RelayState relayState; + + public EcpResponse getResponse() { + return response; + } + + public void setResponse(EcpResponse response) { + this.response = response; + } + + public RelayState getRelayState() { + return relayState; + } + + public void setRelayState(RelayState relayState) { + this.relayState = relayState; + } +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java new file mode 100644 index 000000000..a407ae30d --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java @@ -0,0 +1,9 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Text; + +public class X509Certificate { + + @Text + String value; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java new file mode 100644 index 000000000..81bfb14e1 --- /dev/null +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java @@ -0,0 +1,13 @@ +package edu.mit.mitmobile2.libraries.model.xml.touchstone; + +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; + +import edu.mit.mitmobile2.libraries.model.xml.touchstone.X509Certificate; + +public class X509Data { + + @Element(name = "X509Certificate") + @Namespace(prefix = "ds") + X509Certificate x509Certificate; +} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java similarity index 97% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java index baa2997a5..519f42da5 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/AuthRequest.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java similarity index 96% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java index 85caecdab..358e2eb1a 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/EcpRequest.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java similarity index 92% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java index fffce324d..7cb2570b5 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/Issuer.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Root; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java similarity index 90% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java index 5faa4ad01..1920b879a 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/NameIdPolicy.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Root; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java similarity index 96% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java index b22f7c60d..bdf69e1af 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/PaosRequest.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java similarity index 94% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java index 54cf637d0..d78df4ada 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/RelayState.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Namespace; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java similarity index 91% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java index c93212054..582ee8c90 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlBody.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java similarity index 95% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java index 30db1cd07..936e8a151 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlHeader.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementList; diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java similarity index 97% rename from app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java rename to app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java index bc903b889..a13b28e34 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/XmlRequest.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java @@ -1,4 +1,4 @@ -package edu.mit.mitmobile2.libraries.model; +package edu.mit.mitmobile2.libraries.model.xml.user; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; From 95e039813b64ace77de1446fc23522bd65a1ea60 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Mon, 22 Jun 2015 10:30:42 -0400 Subject: [PATCH 05/10] Trying to fix xml parsing error --- .../activities/LibraryLoginActivity.java | 43 +++++++++++++++++++ .../model/xml/touchstone/CipherData.java | 5 ++- .../model/xml/touchstone/CipherValue.java | 4 ++ .../model/xml/touchstone/DigestMethod.java | 4 ++ .../model/xml/touchstone/EncryptedData.java | 4 +- .../model/xml/touchstone/EncryptedKey.java | 9 ++-- .../xml/touchstone/EncryptionMethod.java | 5 ++- .../model/xml/touchstone/InnerKeyInfo.java | 2 + .../model/xml/touchstone/KeyInfo.java | 2 +- .../xml/touchstone/MITTouchstoneResponse.java | 7 ++- .../model/xml/touchstone/Saml2pResponse.java | 2 +- .../model/xml/touchstone/TouchstoneBody.java | 2 +- .../model/xml/touchstone/X509Certificate.java | 4 ++ .../model/xml/touchstone/X509Data.java | 5 ++- 14 files changed, 85 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index 66851fa83..473d346f0 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -1,16 +1,32 @@ package edu.mit.mitmobile2.libraries.activities; import android.os.Bundle; +import android.os.Environment; +import android.provider.DocumentsContract; import android.support.v7.app.AppCompatActivity; import android.widget.EditText; import android.widget.Switch; +import org.simpleframework.xml.Serializer; +import org.simpleframework.xml.core.Persister; +import org.w3c.dom.Element; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.OutputStream; import java.util.List; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import edu.mit.mitmobile2.R; +import edu.mit.mitmobile2.RetrofitManager; import edu.mit.mitmobile2.libraries.LibraryManager; import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; import edu.mit.mitmobile2.libraries.model.xml.touchstone.MITTouchstoneResponse; @@ -20,6 +36,7 @@ import retrofit.RetrofitError; import retrofit.client.Header; import retrofit.client.Response; +import retrofit.converter.SimpleXMLConverter; public class LibraryLoginActivity extends AppCompatActivity { @@ -45,6 +62,7 @@ void login() { String user = String.valueOf(username.getText()); String pwd = String.valueOf(password.getText()); + LibraryManager.setUsernameAndPassword(null, null); if (saveLoginSwitch.isChecked()) { // TODO: Save login info in AccountUtils? @@ -54,6 +72,7 @@ void login() { @Override public void success(MITLibrariesXmlObject mitLibrariesXmlObject, Response response) { LoggingManager.Timber.d("Success!"); + List
headers = response.getHeaders(); for (Header header : headers) { if (header.getName().equals("Content-Type")) { @@ -96,13 +115,25 @@ public void failure(RetrofitError error) { } private void postLoginAuth(RelayState relayState, MITTouchstoneResponse response) { + DocumentsContract.Document document; + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + LibraryManager.changeEndpoint("https://mobile-dev.mit.edu/Shibboleth.sso/"); + LibraryManager.setUsernameAndPassword(null, null); + response.getHeader().setResponse(null); response.getHeader().setRelayState(new edu.mit.mitmobile2.libraries.model.xml.touchstone.RelayState(relayState.getActor(), relayState.getMustUnderstand(), relayState.getValue())); //TODO: Wrap Post call + Serializer serializer = new Persister(); + try { + serializer.write(response, new File(Environment.getExternalStorageDirectory().getPath() + "/Download/response.xml")); + } catch (Exception e) { + e.printStackTrace(); + } + LibraryManager.MIT_SECURE_SERVICE._postloginuser2(response, new Callback() { @Override public void success(Response response, Response response2) { @@ -116,4 +147,16 @@ public void failure(RetrofitError error) { }); } + public static void elementToStream(Element element, OutputStream out) { + try { + DOMSource source = new DOMSource(element); + StreamResult result = new StreamResult(out); + TransformerFactory transFactory = TransformerFactory.newInstance(); + Transformer transformer = transFactory.newTransformer(); + transformer.transform(source, result); + } catch (Exception ex) { + LoggingManager.Timber.d("XML element to stream error = " + ex.getMessage()); + } + } + } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java index c213758a7..b03d11dff 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java @@ -3,10 +3,13 @@ import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +@Root +@Namespace(prefix = "xenc") public class CipherData { @Element(name = "CipherValue") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") CipherValue cipherValue; } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java index d7c2550b2..34fa277bd 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java @@ -1,7 +1,11 @@ package edu.mit.mitmobile2.libraries.model.xml.touchstone; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; import org.simpleframework.xml.Text; +@Root +@Namespace(prefix = "xenc") public class CipherValue { @Text diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java index 3d7852a72..65705786d 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java @@ -1,7 +1,11 @@ package edu.mit.mitmobile2.libraries.model.xml.touchstone; import org.simpleframework.xml.Attribute; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +@Root +@Namespace(prefix = "ds") public class DigestMethod { @Attribute(name = "Algorithm") diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java index be828325f..07e4f5de2 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java @@ -13,7 +13,7 @@ public class EncryptedData { private String id; @Element(name = "EncryptionMethod") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") EncryptionMethod encryptionMethod; @Element(name = "KeyInfo") @@ -21,7 +21,7 @@ public class EncryptedData { KeyInfo keyInfo; @Element(name = "CipherData") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") CipherData cipherData; public String getType() { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java index f4611c76b..6786fb527 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java @@ -3,22 +3,25 @@ import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +@Root +@Namespace(prefix = "xenc") public class EncryptedKey { @Attribute(name = "Id") private String id; @Element(name = "EncryptionMethod") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") EncryptionMethod encryptionMethod; @Element(name = "KeyInfo") - @Namespace(prefix = "ds") + @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") InnerKeyInfo keyInfo; @Element(name = "CipherData") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") CipherData cipherData; public String getId() { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java index d62525d06..dd835d8a6 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java @@ -3,14 +3,17 @@ import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +@Root +@Namespace(prefix = "xenc") public class EncryptionMethod { @Attribute(name = "Algorithm") private String algorithm; @Element(name = "DigestMethod", required = false) - @Namespace(prefix = "ds") + @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") DigestMethod digestMethod; public String getAlgorithm() { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java index 49195eec8..151bd497a 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java @@ -1,9 +1,11 @@ package edu.mit.mitmobile2.libraries.model.xml.touchstone; import org.simpleframework.xml.Element; +import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; @Root(name = "KeyInfo") +@Namespace(prefix = "ds") public class InnerKeyInfo { @Element(name = "X509Data") diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java index 0e3630465..d399c1177 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java @@ -6,6 +6,6 @@ public class KeyInfo { @Element(name = "EncryptedKey") - @Namespace(prefix = "xenc") + @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") EncryptedKey encryptedKey; } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java index 308bf2eb5..dab71c18f 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java @@ -2,15 +2,18 @@ import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; +@Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/", prefix = "soap11") +@Root(name = "Envelope") public class MITTouchstoneResponse { @Element(name = "Header") - @Namespace(prefix = "soap11") + @Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/header/") TouchstoneHeader header; @Element(name = "Body") - @Namespace(prefix = "soap11") + @Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/body/") TouchstoneBody touchstoneBody; public TouchstoneHeader getHeader() { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java index 5358e23c9..2e9b8e708 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java @@ -25,7 +25,7 @@ public class Saml2pResponse { private String destination; @Element(name = "Issuer") - @Namespace(prefix = "saml2") + @Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") Saml2Issuer issuer; @Element(name = "Status") diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java index 09f7246d7..115d1ccad 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java @@ -4,7 +4,7 @@ import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; -@Namespace(prefix = "soap11") +@Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/body/") @Root(name = "Body") public class TouchstoneBody { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java index a407ae30d..3f156d29d 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java @@ -1,7 +1,11 @@ package edu.mit.mitmobile2.libraries.model.xml.touchstone; +import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; import org.simpleframework.xml.Text; +@Root +@Namespace(prefix = "ds") public class X509Certificate { @Text diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java index 81bfb14e1..7cf47a22e 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java @@ -2,12 +2,15 @@ import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; +import org.simpleframework.xml.Root; import edu.mit.mitmobile2.libraries.model.xml.touchstone.X509Certificate; +@Root +@Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") public class X509Data { @Element(name = "X509Certificate") - @Namespace(prefix = "ds") + @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") X509Certificate x509Certificate; } From 4d534cfe254fd5f613754f45899529c5c5e1ea11 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Wed, 24 Jun 2015 15:36:56 -0400 Subject: [PATCH 06/10] Removed XmlConverter library, just handle XML parsing manually now --- app/build.gradle | 5 - .../edu/mit/mitmobile2/RetrofitManager.java | 26 ----- .../mitmobile2/libraries/LibraryManager.java | 22 ++-- .../activities/LibraryLoginActivity.java | 100 +++++++----------- .../model/MITLibrariesXmlObject.java | 36 ------- .../model/xml/touchstone/CipherData.java | 15 --- .../model/xml/touchstone/CipherValue.java | 13 --- .../model/xml/touchstone/DigestMethod.java | 26 ----- .../model/xml/touchstone/EcpResponse.java | 50 --------- .../xml/touchstone/EncryptedAssertion.java | 13 --- .../model/xml/touchstone/EncryptedData.java | 48 --------- .../model/xml/touchstone/EncryptedKey.java | 47 -------- .../xml/touchstone/EncryptionMethod.java | 39 ------- .../model/xml/touchstone/InnerKeyInfo.java | 13 --- .../model/xml/touchstone/KeyInfo.java | 11 -- .../xml/touchstone/MITTouchstoneResponse.java | 27 ----- .../model/xml/touchstone/RelayState.java | 50 --------- .../model/xml/touchstone/Saml2Issuer.java | 38 ------- .../model/xml/touchstone/Saml2pResponse.java | 100 ------------------ .../model/xml/touchstone/Saml2pStatus.java | 19 ---- .../xml/touchstone/Saml2pStatusCode.java | 26 ----- .../model/xml/touchstone/TouchstoneBody.java | 22 ---- .../xml/touchstone/TouchstoneHeader.java | 34 ------ .../model/xml/touchstone/X509Certificate.java | 13 --- .../model/xml/touchstone/X509Data.java | 16 --- .../libraries/model/xml/user/AuthRequest.java | 95 ----------------- .../libraries/model/xml/user/EcpRequest.java | 63 ----------- .../libraries/model/xml/user/Issuer.java | 36 ------- .../model/xml/user/NameIdPolicy.java | 24 ----- .../libraries/model/xml/user/PaosRequest.java | 61 ----------- .../libraries/model/xml/user/RelayState.java | 45 -------- .../libraries/model/xml/user/XmlBody.java | 22 ---- .../libraries/model/xml/user/XmlHeader.java | 44 -------- .../libraries/model/xml/user/XmlRequest.java | 84 --------------- 34 files changed, 56 insertions(+), 1227 deletions(-) delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java delete mode 100644 app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java diff --git a/app/build.gradle b/app/build.gradle index 7485fc5e4..e3d4c9d1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,11 +56,6 @@ dependencies { compile 'org.threeten:threetenbp:1.2' compile 'com.github.johnkil.android-robototextview:robototextview:2.4.0' compile 'com.jpardogo.materialtabstrip:library:1.0.9' - compile('com.squareup.retrofit:converter-simplexml:1.9.0') { - exclude(group: 'xpp3', module: 'xpp3') - exclude(group: 'stax', module: 'stax-api') - exclude(group: 'stax', module: 'stax') - } compile 'com.cocosw:bottomsheet:1.+@aar' compile 'com.android.support:multidex:1.0.1' compile project(':qrcodereaderview') diff --git a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java index 0bda340d4..b6a6cb863 100644 --- a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java @@ -3,12 +3,6 @@ import android.text.TextUtils; import android.util.Base64; -import com.squareup.okhttp.OkHttpClient; - -import org.simpleframework.xml.Serializer; -import org.simpleframework.xml.convert.AnnotationStrategy; -import org.simpleframework.xml.core.Persister; -import org.simpleframework.xml.strategy.Strategy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -35,8 +29,6 @@ import retrofit.Endpoint; import retrofit.RequestInterceptor; import retrofit.RestAdapter; -import retrofit.client.OkClient; -import retrofit.converter.SimpleXMLConverter; import retrofit.converter.GsonConverter; public abstract class RetrofitManager { @@ -119,24 +111,6 @@ public void log(String message) { .setLogLevel(RestAdapter.LogLevel.FULL) .build(); - static Strategy strategy = new AnnotationStrategy(); - static Serializer serializer = new Persister(strategy); - static OkHttpClient okHttpClient = new OkHttpClient(); - - protected static RestAdapter LOGIN_AUTH_ADAPTER = new RestAdapter.Builder() - .setEndpoint(mitEndpoint) - .setLog(new RestAdapter.Log() { - @Override - public void log(String message) { - Timber.d(message); - } - }) - .setRequestInterceptor(requestInterceptor) - .setLogLevel(RestAdapter.LogLevel.FULL) - .setClient(new OkClient(okHttpClient)) - .setConverter(new SimpleXMLConverter(serializer)) - .build(); - public static void changeEndpoint(String url) { if (mitEndpoint.getUrl() != null) { if (!(mitEndpoint.getUrl() + "/").equals(url)) { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java index b84c8fd3d..dc67ecdfe 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/LibraryManager.java @@ -17,8 +17,6 @@ import edu.mit.mitmobile2.libraries.model.MITLibrariesMITIdentity; import edu.mit.mitmobile2.libraries.model.MITLibrariesUser; import edu.mit.mitmobile2.libraries.model.MITLibrariesWorldcatItem; -import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; -import edu.mit.mitmobile2.libraries.model.xml.touchstone.MITTouchstoneResponse; import edu.mit.mitmobile2.shared.logging.LoggingManager; import retrofit.Callback; import retrofit.client.Response; @@ -26,10 +24,11 @@ import retrofit.http.GET; import retrofit.http.Headers; import retrofit.http.POST; +import retrofit.mime.TypedString; public class LibraryManager extends RetrofitManager { private static final MitLibraryService MIT_LIBRARY_SERVICE = MIT_REST_ADAPTER.create(MitLibraryService.class); - public static final MitSecureService MIT_SECURE_SERVICE = LOGIN_AUTH_ADAPTER.create(MitSecureService.class); + private static final MitSecureService MIT_SECURE_SERVICE = MIT_REST_ADAPTER.create(MitSecureService.class); private static final int LIBRARY_ITEMS_SEARCH_LIMIT = 20; @@ -125,7 +124,7 @@ public static LibraryManagerCall getIdentity(Activity activity, Callback callback) { + public static LibraryManagerCall getLoginAuth(Activity activity, Callback callback) { LibraryManagerCallWrapper returnValue = new LibraryManagerCallWrapper<>(new MITAPIClient(activity), callback); returnValue.getClient().get(Constants.SECURE, Constants.Secure.SECURE_USER_PATH, null, null, returnValue); @@ -141,6 +140,15 @@ public static LibraryManagerCall loginUser(Activity activity, Callback return returnValue; } + public static void postLoginToIdp(TypedString body, Callback callback) { + MIT_SECURE_SERVICE._postloginuser(body, callback); + } + + public static void postAuthToShibboleth(TypedString body, Callback callback) { + MIT_SECURE_SERVICE._postloginuser2(body, callback); + } + + public static void setUsernameAndPassword(String username, String password) { RetrofitManager.userName = username; RetrofitManager.password = password; @@ -177,19 +185,19 @@ public interface MitSecureService { "PAOS: ver=\"urn:liberty:paos:2003-08\"; \"urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp\";" }) @GET(Constants.Secure.SECURE_USER_PATH) - void _getsecure(Callback callback); + void _getsecure(Callback callback); @Headers({ "Content-Type: application/vnd.paos+xml" }) @POST("/idp/profile/SAML2/SOAP/ECP") - void _postloginuser(@Body MITLibrariesXmlObject obj, Callback callback); + void _postloginuser(@Body TypedString obj, Callback callback); @Headers({ "Content-Type: application/vnd.paos+xml" }) @POST("/SAML2/ECP") - void _postloginuser2(@Body MITTouchstoneResponse obj, Callback callback); + void _postloginuser2(@Body TypedString obj, Callback callback); } public static class LibraryManagerCallWrapper extends MITAPIClient.ApiCallWrapper implements LibraryManagerCall, Callback { diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index 473d346f0..a3c38fd16 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -1,42 +1,25 @@ package edu.mit.mitmobile2.libraries.activities; import android.os.Bundle; -import android.os.Environment; -import android.provider.DocumentsContract; import android.support.v7.app.AppCompatActivity; import android.widget.EditText; import android.widget.Switch; -import org.simpleframework.xml.Serializer; -import org.simpleframework.xml.core.Persister; -import org.w3c.dom.Element; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.OutputStream; import java.util.List; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import edu.mit.mitmobile2.R; -import edu.mit.mitmobile2.RetrofitManager; import edu.mit.mitmobile2.libraries.LibraryManager; -import edu.mit.mitmobile2.libraries.model.MITLibrariesXmlObject; -import edu.mit.mitmobile2.libraries.model.xml.touchstone.MITTouchstoneResponse; -import edu.mit.mitmobile2.libraries.model.xml.user.RelayState; import edu.mit.mitmobile2.shared.logging.LoggingManager; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Header; import retrofit.client.Response; -import retrofit.converter.SimpleXMLConverter; +import retrofit.mime.TypedByteArray; +import retrofit.mime.TypedInput; +import retrofit.mime.TypedString; public class LibraryLoginActivity extends AppCompatActivity { @@ -68,17 +51,26 @@ void login() { // TODO: Save login info in AccountUtils? } - LibraryManager.getLoginAuth(this, new Callback() { + LibraryManager.getLoginAuth(this, new Callback() { @Override - public void success(MITLibrariesXmlObject mitLibrariesXmlObject, Response response) { + public void success(Response response, Response response2) { LoggingManager.Timber.d("Success!"); List
headers = response.getHeaders(); for (Header header : headers) { if (header.getName().equals("Content-Type")) { if (header.getValue().equals("application/vnd.paos+xml")) { - // Continue with auth - postUserLoginInfo(mitLibrariesXmlObject.getHeader().getRelayState(), mitLibrariesXmlObject); + String xml = getStringFromBody(response.getBody()); + + int i = xml.indexOf(""); + + String relayState = xml.substring(i, k); + relayState = relayState.replaceAll(" S:", " soap11:"); + + TypedString typedString = alterXmlString(xml, "", "", ""); + postUserLoginInfo(relayState, typedString); + } } } @@ -91,19 +83,20 @@ public void failure(RetrofitError error) { }); } - private void postUserLoginInfo(final RelayState relayState, MITLibrariesXmlObject object) { + + private void postUserLoginInfo(final String relayState, final TypedString body) { LibraryManager.changeEndpoint("https://idp.touchstonenetwork.net/"); LibraryManager.setUsernameAndPassword("mitlibrarytest@gmail.com", "readingrainbow22"); - object.setHeader(null); - - //TODO: Wrap Post call - - LibraryManager.MIT_SECURE_SERVICE._postloginuser(object, new Callback() { + LibraryManager.postLoginToIdp(body, new Callback() { @Override - public void success(MITTouchstoneResponse response, Response response2) { + public void success(Response response, Response response2) { LoggingManager.Timber.d("Success!"); - postLoginAuth(relayState, response); + + String xml = getStringFromBody(response.getBody()); + + TypedString typedString = alterXmlString(xml, "", relayState); + postLoginAuth(typedString); } @Override @@ -114,27 +107,12 @@ public void failure(RetrofitError error) { } - private void postLoginAuth(RelayState relayState, MITTouchstoneResponse response) { - DocumentsContract.Document document; - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - + private void postLoginAuth(TypedString response) { LibraryManager.changeEndpoint("https://mobile-dev.mit.edu/Shibboleth.sso/"); LibraryManager.setUsernameAndPassword(null, null); - response.getHeader().setResponse(null); - response.getHeader().setRelayState(new edu.mit.mitmobile2.libraries.model.xml.touchstone.RelayState(relayState.getActor(), relayState.getMustUnderstand(), relayState.getValue())); - - //TODO: Wrap Post call - - Serializer serializer = new Persister(); - try { - serializer.write(response, new File(Environment.getExternalStorageDirectory().getPath() + "/Download/response.xml")); - } catch (Exception e) { - e.printStackTrace(); - } - - LibraryManager.MIT_SECURE_SERVICE._postloginuser2(response, new Callback() { + LibraryManager.postAuthToShibboleth(response, new Callback() { @Override public void success(Response response, Response response2) { LoggingManager.Timber.d("Success!"); @@ -147,16 +125,20 @@ public void failure(RetrofitError error) { }); } - public static void elementToStream(Element element, OutputStream out) { - try { - DOMSource source = new DOMSource(element); - StreamResult result = new StreamResult(out); - TransformerFactory transFactory = TransformerFactory.newInstance(); - Transformer transformer = transFactory.newTransformer(); - transformer.transform(source, result); - } catch (Exception ex) { - LoggingManager.Timber.d("XML element to stream error = " + ex.getMessage()); - } + private TypedString alterXmlString(String xml, String start, String end, String substitution) { + int i = xml.indexOf(start); + int k = xml.indexOf(end); + + String before = xml.substring(0, i); + String after = xml.substring(k, xml.length()); + + String postString = before + substitution + after; + return new TypedString(postString); + } + + private String getStringFromBody(TypedInput body) { + TypedByteArray byteArray = (TypedByteArray) body; + return new String(byteArray.getBytes()); } } diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java deleted file mode 100644 index c2c18fa71..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/MITLibrariesXmlObject.java +++ /dev/null @@ -1,36 +0,0 @@ -package edu.mit.mitmobile2.libraries.model; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -import edu.mit.mitmobile2.libraries.model.xml.user.XmlBody; -import edu.mit.mitmobile2.libraries.model.xml.user.XmlHeader; - -@Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/") -@Root(name = "Envelope") -public class MITLibrariesXmlObject { - - @Element(name = "Header", required = false) - XmlHeader header; - - @Element(name = "Body") - XmlBody body; - - public XmlHeader getHeader() { - return header; - } - - public void setHeader(XmlHeader header) { - this.header = header; - } - - public XmlBody getBody() { - return body; - } - - public void setBody(XmlBody body) { - this.body = body; - } - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java deleted file mode 100644 index b03d11dff..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherData.java +++ /dev/null @@ -1,15 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root -@Namespace(prefix = "xenc") -public class CipherData { - - @Element(name = "CipherValue") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - CipherValue cipherValue; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java deleted file mode 100644 index 34fa277bd..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/CipherValue.java +++ /dev/null @@ -1,13 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -@Root -@Namespace(prefix = "xenc") -public class CipherValue { - - @Text - String value; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java deleted file mode 100644 index 65705786d..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/DigestMethod.java +++ /dev/null @@ -1,26 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root -@Namespace(prefix = "ds") -public class DigestMethod { - - @Attribute(name = "Algorithm") - private String algorithm; - - public String getAlgorithm() { - return algorithm; - } - - public void setAlgorithm(String algorithm) { - this.algorithm = algorithm; - } - - @Override - public String toString() { - return "ClassPojo [algorithm = " + algorithm + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java deleted file mode 100644 index cbf8def1d..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EcpResponse.java +++ /dev/null @@ -1,50 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") -@Root(name = "Response") -public class EcpResponse { - - @Attribute(name = "AssertionConsumerServiceURL") - private String assertionConsumerServiceURL; - - @Namespace(prefix = "soap11") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "soap11") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - public String getAssertionConsumerServiceURL() { - return assertionConsumerServiceURL; - } - - public void setAssertionConsumerServiceURL(String AssertionConsumerServiceURL) { - this.assertionConsumerServiceURL = AssertionConsumerServiceURL; - } - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - @Override - public String toString() { - return "ClassPojo [AssertionConsumerServiceURL = " + assertionConsumerServiceURL + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java deleted file mode 100644 index 66494888b..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedAssertion.java +++ /dev/null @@ -1,13 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; - -public class EncryptedAssertion { - - @Element(name = "EncryptedData") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - EncryptedData encryptedData; - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java deleted file mode 100644 index 07e4f5de2..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedData.java +++ /dev/null @@ -1,48 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; - -public class EncryptedData { - - @Attribute(name = "Type") - private String type; - - @Attribute(name = "Id") - private String id; - - @Element(name = "EncryptionMethod") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - EncryptionMethod encryptionMethod; - - @Element(name = "KeyInfo") - @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") - KeyInfo keyInfo; - - @Element(name = "CipherData") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - CipherData cipherData; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - @Override - public String toString() { - return "ClassPojo [type = " + type + ", id = " + id + "]"; - } - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java deleted file mode 100644 index 6786fb527..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptedKey.java +++ /dev/null @@ -1,47 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root -@Namespace(prefix = "xenc") -public class EncryptedKey { - - @Attribute(name = "Id") - private String id; - - @Element(name = "EncryptionMethod") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - EncryptionMethod encryptionMethod; - - @Element(name = "KeyInfo") - @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") - InnerKeyInfo keyInfo; - - @Element(name = "CipherData") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - CipherData cipherData; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public EncryptionMethod getEncryptionMethod() { - return encryptionMethod; - } - - public void setEncryptionMethod(EncryptionMethod encryptionMethod) { - this.encryptionMethod = encryptionMethod; - } - - @Override - public String toString() { - return "ClassPojo [id = " + id + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java deleted file mode 100644 index dd835d8a6..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/EncryptionMethod.java +++ /dev/null @@ -1,39 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root -@Namespace(prefix = "xenc") -public class EncryptionMethod { - - @Attribute(name = "Algorithm") - private String algorithm; - - @Element(name = "DigestMethod", required = false) - @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") - DigestMethod digestMethod; - - public String getAlgorithm() { - return algorithm; - } - - public void setAlgorithm(String Algorithm) { - this.algorithm = Algorithm; - } - - public DigestMethod getDigestMethod() { - return digestMethod; - } - - public void setDigestMethod(DigestMethod digestMethod) { - this.digestMethod = digestMethod; - } - - @Override - public String toString() { - return "ClassPojo [algorithm = " + algorithm + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java deleted file mode 100644 index 151bd497a..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/InnerKeyInfo.java +++ /dev/null @@ -1,13 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root(name = "KeyInfo") -@Namespace(prefix = "ds") -public class InnerKeyInfo { - - @Element(name = "X509Data") - X509Data x509Data; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java deleted file mode 100644 index d399c1177..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/KeyInfo.java +++ /dev/null @@ -1,11 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; - -public class KeyInfo { - - @Element(name = "EncryptedKey") - @Namespace(prefix = "xenc", reference = "http://www.w3.org/2001/04/xmlenc#") - EncryptedKey encryptedKey; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java deleted file mode 100644 index dab71c18f..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/MITTouchstoneResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/", prefix = "soap11") -@Root(name = "Envelope") -public class MITTouchstoneResponse { - - @Element(name = "Header") - @Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/header/") - TouchstoneHeader header; - - @Element(name = "Body") - @Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/body/") - TouchstoneBody touchstoneBody; - - public TouchstoneHeader getHeader() { - return header; - } - - public void setHeader(TouchstoneHeader header) { - this.header = header; - } - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java deleted file mode 100644 index b79c7a46b..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/RelayState.java +++ /dev/null @@ -1,50 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Text; - -public class RelayState { - - - public RelayState(String actor, String mustUnderstand, String value) { - this.actor = actor; - this.mustUnderstand = mustUnderstand; - this.value = value; - } - - @Namespace(prefix = "soap11") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "soap11") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - @Text - String value; - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java deleted file mode 100644 index e0a23f71c..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2Issuer.java +++ /dev/null @@ -1,38 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -@Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") -@Root(name = "Issuer") -public class Saml2Issuer { - - @Text - private String value; - - @Attribute(name = "Format") - private String format; - - public String getContent() { - return value; - } - - public void setContent(String content) { - this.value = content; - } - - public String getFormat() { - return format; - } - - public void setFormat(String Format) { - this.format = Format; - } - - @Override - public String toString() { - return "ClassPojo [content = " + value + ", format = " + format + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java deleted file mode 100644 index 2e9b8e708..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pResponse.java +++ /dev/null @@ -1,100 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "saml2p", reference = "urn:oasis:names:tc:SAML:2.0:protocol") -@Root(name = "Response") -public class Saml2pResponse { - - @Attribute(name = "ID") - private String id; - - @Attribute(name = "InResponseTo") - private String inResponseTo; - - @Attribute(name = "Version") - private String version; - - @Attribute(name = "IssueInstant") - private String issueInstant; - - @Attribute(name = "Destination") - private String destination; - - @Element(name = "Issuer") - @Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") - Saml2Issuer issuer; - - @Element(name = "Status") - @Namespace(prefix = "saml2p") - Saml2pStatus status; - - @Namespace(prefix = "saml2", reference = "urn:oasis:names:tc:SAML:2.0:assertion") - @Element(name = "EncryptedAssertion") - EncryptedAssertion encryptedAssertion; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getInResponseTo() { - return inResponseTo; - } - - public void setInResponseTo(String InResponseTo) { - this.inResponseTo = InResponseTo; - } - - public String getVersion() { - return version; - } - - public void setVersion(String Version) { - this.version = Version; - } - - public String getIssueInstant() { - return issueInstant; - } - - public void setIssueInstant(String IssueInstant) { - this.issueInstant = IssueInstant; - } - - public String getDestination() { - return destination; - } - - public void setDestination(String Destination) { - this.destination = Destination; - } - - public Saml2Issuer getIssuer() { - return issuer; - } - - public void setIssuer(Saml2Issuer issuer) { - this.issuer = issuer; - } - - public Saml2pStatus getStatus() { - return status; - } - - public void setStatus(Saml2pStatus status) { - this.status = status; - } - - @Override - public String toString() { - return "ClassPojo [id = " + id + ", inResponseTo = " + inResponseTo + ", version = " + version + ", issueInstant = " + issueInstant + ", destination = " + destination + "]"; - } - -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java deleted file mode 100644 index 418e21fec..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatus.java +++ /dev/null @@ -1,19 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; - -public class Saml2pStatus { - - @Element(name = "StatusCode") - @Namespace(prefix = "saml2p") - Saml2pStatusCode statusCode; - - public Saml2pStatusCode getStatusCode() { - return statusCode; - } - - public void setStatusCode(Saml2pStatusCode statusCode) { - this.statusCode = statusCode; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java deleted file mode 100644 index e45ba8130..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/Saml2pStatusCode.java +++ /dev/null @@ -1,26 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "saml2") -@Root(name = "StatusCode") -public class Saml2pStatusCode { - - @Attribute(name = "Value") - private String value; - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - @Override - public String toString() { - return "ClassPojo [value = " + value + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java deleted file mode 100644 index 115d1ccad..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneBody.java +++ /dev/null @@ -1,22 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/body/") -@Root(name = "Body") -public class TouchstoneBody { - - @Element(name = "Response") - @Namespace(prefix = "saml2p", reference = "urn:oasis:names:tc:SAML:2.0:protocol") - Saml2pResponse response; - - public Saml2pResponse getResponse() { - return response; - } - - public void setResponse(Saml2pResponse response) { - this.response = response; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java deleted file mode 100644 index e6bb7cbfe..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/TouchstoneHeader.java +++ /dev/null @@ -1,34 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "soap11", reference = "http://schemas.xmlsoap.org/soap/envelope/") -@Root(name = "Header") -public class TouchstoneHeader { - - @Element(name = "Response", required = false) - @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") - EcpResponse response; - - @Element(name = "RelayState", required = false) - @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") - RelayState relayState; - - public EcpResponse getResponse() { - return response; - } - - public void setResponse(EcpResponse response) { - this.response = response; - } - - public RelayState getRelayState() { - return relayState; - } - - public void setRelayState(RelayState relayState) { - this.relayState = relayState; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java deleted file mode 100644 index 3f156d29d..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Certificate.java +++ /dev/null @@ -1,13 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -@Root -@Namespace(prefix = "ds") -public class X509Certificate { - - @Text - String value; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java deleted file mode 100644 index 7cf47a22e..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/touchstone/X509Data.java +++ /dev/null @@ -1,16 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.touchstone; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -import edu.mit.mitmobile2.libraries.model.xml.touchstone.X509Certificate; - -@Root -@Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") -public class X509Data { - - @Element(name = "X509Certificate") - @Namespace(prefix = "ds", reference = "http://www.w3.org/2000/09/xmldsig#") - X509Certificate x509Certificate; -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java deleted file mode 100644 index 519f42da5..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/AuthRequest.java +++ /dev/null @@ -1,95 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(reference = "urn:oasis:names:tc:SAML:2.0:protocol", prefix = "samlp") -@Root(name = "AuthnRequest") -public class AuthRequest { - - @Attribute(name = "ProtocolBinding") - private String protocolBinding; - - @Attribute(name = "ID") - private String id; - - @Attribute(name = "AssertionConsumerServiceURL") - private String consumerServiceUrl; - - @Attribute(name = "Version") - private String version; - - @Attribute(name = "IssueInstant") - private String issueInstant; - - @Element(name = "Issuer") - @Namespace(prefix = "saml", reference = "urn:oasis:names:tc:SAML:2.0:assertion") - Issuer issuer; - - @Element(name = "NameIDPolicy") - @Namespace(prefix = "samlp", reference = "urn:oasis:names:tc:SAML:2.0:protocol") - NameIdPolicy nameIdPolicy; - - public String getProtocolBinding() { - return protocolBinding; - } - - public void setProtocolBinding(String ProtocolBinding) { - this.protocolBinding = ProtocolBinding; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getConsumerServiceUrl() { - return consumerServiceUrl; - } - - public void setConsumerServiceUrl(String AssertionConsumerServiceURL) { - this.consumerServiceUrl = AssertionConsumerServiceURL; - } - - public String getVersion() { - return version; - } - - public void setVersion(String Version) { - this.version = Version; - } - - public String getIssueInstant() { - return issueInstant; - } - - public void setIssueInstant(String IssueInstant) { - this.issueInstant = IssueInstant; - } - - public Issuer getIssuer() { - return issuer; - } - - public void setIssuer(Issuer issuer) { - this.issuer = issuer; - } - - public NameIdPolicy getNameIdPolicy() { - return nameIdPolicy; - } - - public void setNameIdPolicy(NameIdPolicy nameIdPolicy) { - this.nameIdPolicy = nameIdPolicy; - } - - @Override - public String toString() { - return "ClassPojo [protocolBinding = " + protocolBinding + ", id = " + id + ", consumerServiceUrl = " + consumerServiceUrl + ", version = " + version + ", issueInstant = " + issueInstant + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java deleted file mode 100644 index 358e2eb1a..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/EcpRequest.java +++ /dev/null @@ -1,63 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") -@Root(name = "Request") -public class EcpRequest { - - @Attribute(name = "IsPassive") - private String isPassive; - - @Namespace(prefix = "S") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "S") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - @Namespace(prefix = "saml") - @Element(name = "saml:Issuer") - Issuer issuer; - - public String getIsPassive() { - return isPassive; - } - - public void setIsPassive(String IsPassive) { - this.isPassive = IsPassive; - } - - public Issuer getIssuer() { - return issuer; - } - - public void setIssuer(Issuer issuer) { - this.issuer = issuer; - } - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - @Override - public String toString() { - return "ClassPojo [isPassive = " + isPassive + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java deleted file mode 100644 index 7cb2570b5..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/Issuer.java +++ /dev/null @@ -1,36 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -@Root(name = "saml:Issuer") -public class Issuer { - - @Attribute(required = false) - private String content; - - @Text - private String value; - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - @Override - public String toString() { - return "ClassPojo [content = " + content + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java deleted file mode 100644 index 1920b879a..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/NameIdPolicy.java +++ /dev/null @@ -1,24 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Root; - -@Root(name = "samlp:NameIDPolicy") -public class NameIdPolicy { - - @Attribute(name = "AllowCreate") - private String allowCreate; - - public String getAllowCreate() { - return allowCreate; - } - - public void setAllowCreate(String AllowCreate) { - this.allowCreate = AllowCreate; - } - - @Override - public String toString() { - return "ClassPojo [allowCreate = " + allowCreate + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java deleted file mode 100644 index bdf69e1af..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/PaosRequest.java +++ /dev/null @@ -1,61 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Attribute; - -@Namespace(prefix = "paos", reference = "urn:liberty:paos:2003-08") -@Root(name = "Request") -public class PaosRequest { - - @Attribute - private String service; - - @Attribute - private String responseConsumerURL; - - @Namespace(prefix = "S") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "S") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public String getResponseConsumerURL() { - return responseConsumerURL; - } - - public void setResponseConsumerURL(String responseConsumerURL) { - this.responseConsumerURL = responseConsumerURL; - } - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - @Override - public String toString() { - return "ClassPojo [service = " + service + ", responseConsumerURL = " + responseConsumerURL + "]"; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java deleted file mode 100644 index d78df4ada..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/RelayState.java +++ /dev/null @@ -1,45 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -@Root(name = "ecp:RelayState") -public class RelayState { - - @Namespace(prefix = "S") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "S") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - @Text - String value; - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java deleted file mode 100644 index 582ee8c90..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlBody.java +++ /dev/null @@ -1,22 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Namespace(prefix = "S", reference = "http://schemas.xmlsoap.org/soap/envelope/") -@Root(name = "Body") -public class XmlBody { - - @Element(name = "AuthnRequest") - @Namespace(prefix = "samlp", reference = "urn:oasis:names:tc:SAML:2.0:protocol") - AuthRequest authRequest; - - public AuthRequest getAuthRequest() { - return authRequest; - } - - public void setAuthRequest(AuthRequest authRequest) { - this.authRequest = authRequest; - } -} \ No newline at end of file diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java deleted file mode 100644 index 936e8a151..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlHeader.java +++ /dev/null @@ -1,44 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Element; -import org.simpleframework.xml.ElementList; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.NamespaceList; -import org.simpleframework.xml.Root; -import org.simpleframework.xml.Text; - -import java.util.List; - -@NamespaceList( - { - @Namespace(prefix = "paos", reference = "urn:liberty:paos:2003-08"), - @Namespace(prefix = "ecp", reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") - } -) -@Root(name = "Header") -public class XmlHeader { - - @ElementList(inline = true, entry = "Request") - List Request; - - @Namespace(reference = "urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp") - @Element(name = "RelayState") - @Text - RelayState relayState; - - public RelayState getRelayState() { - return relayState; - } - - public void setRelayState(RelayState relayState) { - this.relayState = relayState; - } - - public List getRequest() { - return Request; - } - - public void setRequest(List request) { - Request = request; - } -} diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java b/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java deleted file mode 100644 index a13b28e34..000000000 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/model/xml/user/XmlRequest.java +++ /dev/null @@ -1,84 +0,0 @@ -package edu.mit.mitmobile2.libraries.model.xml.user; - -import org.simpleframework.xml.Attribute; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Namespace; -import org.simpleframework.xml.Root; - -@Root(strict = false) -public class XmlRequest { - - @Attribute(required = false) - private String service; - - @Attribute(required = false) - private String responseConsumerURL; - - @Namespace(prefix = "S") - @Attribute(name = "actor") - private String actor; - - @Namespace(prefix = "S") - @Attribute(name = "mustUnderstand") - private String mustUnderstand; - - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; - } - - public String getResponseConsumerURL() { - return responseConsumerURL; - } - - public void setResponseConsumerURL(String responseConsumerURL) { - this.responseConsumerURL = responseConsumerURL; - } - - public String getActor() { - return actor; - } - - public void setActor(String actor) { - this.actor = actor; - } - - public String getMustUnderstand() { - return mustUnderstand; - } - - public void setMustUnderstand(String mustUnderstand) { - this.mustUnderstand = mustUnderstand; - } - - @Attribute(name = "IsPassive", required = false) - private String isPassive; - - @Element(name = "Issuer", required = false) - @Namespace(prefix = "saml") - Issuer issuer; - - public String getIsPassive() { - return isPassive; - } - - public void setIsPassive(String IsPassive) { - this.isPassive = IsPassive; - } - - public Issuer getIssuer() { - return issuer; - } - - public void setIssuer(Issuer issuer) { - this.issuer = issuer; - } - - @Override - public String toString() { - return "ClassPojo [isPassive = " + isPassive + "]"; - } -} From 855d5b57df5832b02c2d1b629cab1f7db8d23a64 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Wed, 24 Jun 2015 15:46:07 -0400 Subject: [PATCH 07/10] Small bug fix --- .../mitmobile2/libraries/activities/LibraryLoginActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index a3c38fd16..184752e71 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -58,7 +58,7 @@ public void success(Response response, Response response2) { List
headers = response.getHeaders(); for (Header header : headers) { - if (header.getName().equals("Content-Type")) { + if (header.getName() != null && header.getName().equals("Content-Type")) { if (header.getValue().equals("application/vnd.paos+xml")) { String xml = getStringFromBody(response.getBody()); From 70c1e55b5b1d6a8dae7b92b7736d5f1d24c3a3d9 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Wed, 24 Jun 2015 16:06:38 -0400 Subject: [PATCH 08/10] Added return --- .../mitmobile2/libraries/activities/LibraryLoginActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java index 184752e71..c2a7e03b6 100644 --- a/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java +++ b/app/src/main/java/edu/mit/mitmobile2/libraries/activities/LibraryLoginActivity.java @@ -70,7 +70,7 @@ public void success(Response response, Response response2) { TypedString typedString = alterXmlString(xml, "", "", ""); postUserLoginInfo(relayState, typedString); - + return; } } } From fea4426450f90da96ad55bf590ff7c0e75eee537 Mon Sep 17 00:00:00 2001 From: Blake Skinner Date: Mon, 29 Jun 2015 16:21:14 -0400 Subject: [PATCH 09/10] Switch over to explicitly setting up an OkHttpClient and setting a cookie store. This fixes the issue where the final stage of the ECP protocol would result in a 404 from the Shibboleth. --- .../edu/mit/mitmobile2/RetrofitManager.java | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java index b6a6cb863..28f270919 100644 --- a/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java +++ b/app/src/main/java/edu/mit/mitmobile2/RetrofitManager.java @@ -11,9 +11,13 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; +import com.squareup.okhttp.OkHttpClient; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.CookiePolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -29,6 +33,7 @@ import retrofit.Endpoint; import retrofit.RequestInterceptor; import retrofit.RestAdapter; +import retrofit.client.OkClient; import retrofit.converter.GsonConverter; public abstract class RetrofitManager { @@ -98,18 +103,30 @@ public void intercept(RequestFacade request) { } }; - protected static RestAdapter MIT_REST_ADAPTER = new RestAdapter.Builder() - .setEndpoint(mitEndpoint) - .setConverter(new GsonConverter(gson)) - .setLog(new RestAdapter.Log() { - @Override - public void log(String message) { - Timber.d(message); - } - }) - .setRequestInterceptor(requestInterceptor) - .setLogLevel(RestAdapter.LogLevel.FULL) - .build(); + protected static RestAdapter MIT_REST_ADAPTER; + + static { + CookieManager cookieManager = new CookieManager(); + cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER); + + OkHttpClient client = new OkHttpClient(); + client.setCookieHandler(cookieManager); + + OkClient restServiceClient = new OkClient(client); + MIT_REST_ADAPTER = new RestAdapter.Builder() + .setEndpoint(mitEndpoint) + .setClient(restServiceClient) + .setConverter(new GsonConverter(gson)) + .setLog(new RestAdapter.Log() { + @Override + public void log(String message) { + Timber.d(message); + } + }) + .setRequestInterceptor(requestInterceptor) + .setLogLevel(RestAdapter.LogLevel.FULL) + .build(); + } public static void changeEndpoint(String url) { if (mitEndpoint.getUrl() != null) { From ab4f2a45d08bdd5012f9365def104ad85465e635 Mon Sep 17 00:00:00 2001 From: Chris Kudlack Date: Thu, 20 Aug 2015 10:11:17 -0400 Subject: [PATCH 10/10] Updated gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0454307c7..81db73b43 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { maven { url "http://maven.restlet.com" } } dependencies { - classpath 'com.android.tools.build:gradle:1.2.3' + classpath 'com.android.tools.build:gradle:1.3.0' } }