mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	make saml work with new library
This commit is contained in:
		
							parent
							
								
									e261b1df2f
								
							
						
					
					
						commit
						804b31da39
					
				| @ -27,7 +27,9 @@ import com.owncloud.android.lib.common.OwnCloudClient; | |||||||
| import com.owncloud.android.lib.common.http.HttpClient; | import com.owncloud.android.lib.common.http.HttpClient; | ||||||
| import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | ||||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor.RequestInterceptor; | import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor.RequestInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.httpclient.UsernamePasswordCredentials; | import org.apache.commons.httpclient.UsernamePasswordCredentials; | ||||||
| import org.apache.commons.httpclient.auth.AuthPolicy; | import org.apache.commons.httpclient.auth.AuthPolicy; | ||||||
| @ -68,11 +70,10 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { | |||||||
|         ArrayList<RequestInterceptor> requestInterceptors = HttpClient.getOkHttpInterceptor().getRequestInterceptors(); |         ArrayList<RequestInterceptor> requestInterceptors = HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||||
| 
 | 
 | ||||||
|         // Clear previous basic credentials |         // Clear previous basic credentials | ||||||
|         for (RequestInterceptor requestInterceptor : requestInterceptors) { |         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||||
|             if (requestInterceptor instanceof BasicAuthInterceptor) { |             if (requestInterceptor instanceof BasicAuthInterceptor | ||||||
|                 requestInterceptors.remove(requestInterceptor); |                     || requestInterceptor instanceof BarearAuthInterceptor | ||||||
|             } |                     || requestInterceptor instanceof SamlAuthInterceptor) { | ||||||
|             if(requestInterceptor instanceof BarearAuthInterceptor) { |  | ||||||
|                 requestInterceptors.remove(requestInterceptor); |                 requestInterceptors.remove(requestInterceptor); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -39,6 +39,7 @@ import com.owncloud.android.lib.common.http.HttpClient; | |||||||
| import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | ||||||
| import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||||
| import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||||
| 
 | 
 | ||||||
| public class OwnCloudBearerCredentials implements OwnCloudCredentials { | public class OwnCloudBearerCredentials implements OwnCloudCredentials { | ||||||
| 
 | 
 | ||||||
| @ -60,11 +61,10 @@ public class OwnCloudBearerCredentials implements OwnCloudCredentials { | |||||||
| 
 | 
 | ||||||
|         // Clear previous basic credentials |         // Clear previous basic credentials | ||||||
|         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { |         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||||
|             if (requestInterceptor instanceof BasicAuthInterceptor) { |             if (requestInterceptor instanceof BasicAuthInterceptor | ||||||
|                 requestInterceptors.remove(requestInterceptor); |                 || requestInterceptor instanceof BarearAuthInterceptor | ||||||
|             } |                 || requestInterceptor instanceof SamlAuthInterceptor) { | ||||||
|             if(requestInterceptor instanceof BarearAuthInterceptor) { |                     requestInterceptors.remove(requestInterceptor); | ||||||
|                 requestInterceptors.remove(requestInterceptor); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -23,12 +23,20 @@ | |||||||
|  */ |  */ | ||||||
| package com.owncloud.android.lib.common.authentication; | package com.owncloud.android.lib.common.authentication; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.httpclient.Cookie; |  | ||||||
| import org.apache.commons.httpclient.cookie.CookiePolicy; | import org.apache.commons.httpclient.cookie.CookiePolicy; | ||||||
| 
 | 
 | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| 
 | 
 | ||||||
| import com.owncloud.android.lib.common.OwnCloudClient; | import com.owncloud.android.lib.common.OwnCloudClient; | ||||||
|  | import com.owncloud.android.lib.common.http.HttpClient; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.BarearAuthInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.BasicAuthInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.HttpInterceptor; | ||||||
|  | import com.owncloud.android.lib.common.http.interceptors.SamlAuthInterceptor; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | 
 | ||||||
|  | import okhttp3.Cookie; | ||||||
| 
 | 
 | ||||||
| public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | ||||||
| 
 | 
 | ||||||
| @ -46,26 +54,20 @@ public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { | |||||||
|         client.getParams().setCredentialCharset(OwnCloudCredentialsFactory.CREDENTIAL_CHARSET); |         client.getParams().setCredentialCharset(OwnCloudCredentialsFactory.CREDENTIAL_CHARSET); | ||||||
|         client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); |         client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); | ||||||
| 
 | 
 | ||||||
|         // TODO |         final ArrayList<HttpInterceptor.RequestInterceptor> requestInterceptors = | ||||||
| //        client.setFollowRedirects(false); |                 HttpClient.getOkHttpInterceptor().getRequestInterceptors(); | ||||||
| 
 | 
 | ||||||
|         Uri serverUri = client.getBaseUri(); |         // Clear previous basic credentials | ||||||
| 
 |         for (HttpInterceptor.RequestInterceptor requestInterceptor : requestInterceptors) { | ||||||
|         String[] cookies = mSessionCookie.split(";"); |             if (requestInterceptor instanceof BasicAuthInterceptor | ||||||
|         if (cookies.length > 0) { |                     || requestInterceptor instanceof BarearAuthInterceptor | ||||||
|             Cookie cookie = null; |                     || requestInterceptor instanceof SamlAuthInterceptor) { | ||||||
|             for (int i = 0; i < cookies.length; i++) { |                 requestInterceptors.remove(requestInterceptor); | ||||||
|                 int equalPos = cookies[i].indexOf('='); |  | ||||||
|                 if (equalPos >= 0) { |  | ||||||
|                     cookie = new Cookie(); |  | ||||||
|                     cookie.setName(cookies[i].substring(0, equalPos)); |  | ||||||
|                     cookie.setValue(cookies[i].substring(equalPos + 1)); |  | ||||||
|                     cookie.setDomain(serverUri.getHost());    // VERY IMPORTANT |  | ||||||
|                     cookie.setPath(serverUri.getPath());    // VERY IMPORTANT |  | ||||||
|                     client.getState().addCookie(cookie); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         HttpClient.getOkHttpInterceptor() | ||||||
|  |                 .addRequestInterceptor(new SamlAuthInterceptor(mSessionCookie)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  | |||||||
| @ -0,0 +1,21 @@ | |||||||
|  | package com.owncloud.android.lib.common.http.interceptors; | ||||||
|  | 
 | ||||||
|  | import java.io.IOException; | ||||||
|  | 
 | ||||||
|  | import okhttp3.Request; | ||||||
|  | 
 | ||||||
|  | public class SamlAuthInterceptor implements HttpInterceptor.RequestInterceptor { | ||||||
|  | 
 | ||||||
|  |     private final String mSessionCookie; | ||||||
|  | 
 | ||||||
|  |     public SamlAuthInterceptor(String sessionCookie) { | ||||||
|  |         this.mSessionCookie = sessionCookie; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public Request intercept(Request request) throws IOException { | ||||||
|  |         return request.newBuilder() | ||||||
|  |                 .addHeader("Cookie", mSessionCookie) | ||||||
|  |                 .build(); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user