Load SAML log-in dialog from the original URL so that cookies returned with the redir...
authorDavid A. Velasco <dvelasco@solidgear.es>
Fri, 30 Jan 2015 09:18:28 +0000 (10:18 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Fri, 30 Jan 2015 10:34:43 +0000 (11:34 +0100)
src/com/owncloud/android/authentication/AuthenticatorActivity.java
src/com/owncloud/android/authentication/SsoWebViewClient.java
src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java

index 0f7892e..7672284 100644 (file)
@@ -1020,12 +1020,11 @@ SsoWebViewClientListener, OnSslUntrustedCertListener {
         dismissDialog(WAIT_DIALOG_TAG);\r
 
         if (result.isIdPRedirection()) {
-            String url = result.getRedirectedLocation();\r
             String targetUrl = mServerInfo.mBaseUrl \r
                     + AccountUtils.getWebdavPath(mServerInfo.mVersion, mAuthTokenType);\r
 \r
             // Show dialog\r
-            SamlWebViewDialog dialog = SamlWebViewDialog.newInstance(url, targetUrl);            \r
+            SamlWebViewDialog dialog = SamlWebViewDialog.newInstance(targetUrl, targetUrl);            \r
             dialog.show(getSupportFragmentManager(), SAML_DIALOG_TAG);\r
 \r
             mAuthStatusIcon = 0;\r
index b90ab85..60178a8 100644 (file)
@@ -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() {
index 76243ed..2b00e9b 100644 (file)
@@ -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);