From: David A. Velasco Date: Fri, 30 Jan 2015 09:18:28 +0000 (+0100) Subject: Load SAML log-in dialog from the original URL so that cookies returned with the redir... X-Git-Tag: oc-android-1.7.0_signed~15^2^2~2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/54dc3efc18d67028e1691fee2309431daa2afab3?hp=--cc Load SAML log-in dialog from the original URL so that cookies returned with the redirection are not lost --- 54dc3efc18d67028e1691fee2309431daa2afab3 diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index 0f7892ee..7672284b 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -1020,12 +1020,11 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { dismissDialog(WAIT_DIALOG_TAG); if (result.isIdPRedirection()) { - String url = result.getRedirectedLocation(); String targetUrl = mServerInfo.mBaseUrl + AccountUtils.getWebdavPath(mServerInfo.mVersion, mAuthTokenType); // Show dialog - SamlWebViewDialog dialog = SamlWebViewDialog.newInstance(url, targetUrl); + SamlWebViewDialog dialog = SamlWebViewDialog.newInstance(targetUrl, targetUrl); dialog.show(getSupportFragmentManager(), SAML_DIALOG_TAG); mAuthStatusIcon = 0; diff --git a/src/com/owncloud/android/authentication/SsoWebViewClient.java b/src/com/owncloud/android/authentication/SsoWebViewClient.java index b90ab85b..60178a81 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -120,11 +120,11 @@ public class SsoWebViewClient extends WebViewClient { public void onPageFinished (WebView view, String url) { Log_OC.d(TAG, "onPageFinished : " + url); mLastReloadedUrlAtError = null; + CookieManager cookieManager = CookieManager.getInstance(); + final String cookies = cookieManager.getCookie(url); + Log_OC.d(TAG, "Cookies: " + cookies); if (url.startsWith(mTargetUrl)) { view.setVisibility(View.GONE); - CookieManager cookieManager = CookieManager.getInstance(); - final String cookies = cookieManager.getCookie(url); - Log_OC.d(TAG, "Cookies: " + cookies); if (mListenerHandler != null && mListenerRef != null) { // this is good idea because onPageFinished is not running in the UI thread mListenerHandler.post(new Runnable() { diff --git a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java index 76243edf..2b00e9b4 100644 --- a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java +++ b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java @@ -17,6 +17,8 @@ package com.owncloud.android.ui.dialog; +import org.apache.commons.httpclient.methods.PostMethod; + import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; @@ -144,11 +146,6 @@ public class SamlWebViewDialog extends SherlockDialogFragment { mSsoWebView.setFocusableInTouchMode(true); mSsoWebView.setClickable(true); - CookieManager cookieManager = CookieManager.getInstance(); - cookieManager.setAcceptCookie(true); - cookieManager.removeAllCookie(); - mSsoWebView.loadUrl(mInitialUrl); - WebSettings webSettings = mSsoWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(false); @@ -156,6 +153,12 @@ public class SamlWebViewDialog extends SherlockDialogFragment { webSettings.setSavePassword(false); webSettings.setUserAgentString(OwnCloudClient.USER_AGENT); webSettings.setSaveFormData(false); + + CookieManager cookieManager = CookieManager.getInstance(); + cookieManager.setAcceptCookie(true); + cookieManager.removeAllCookie(); + + mSsoWebView.loadUrl(mInitialUrl); } mWebViewClient.setTargetUrl(mTargetUrl);