mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 02:17:41 +00:00 
			
		
		
		
	Merge pull request #149 from owncloud/recover_preemptive_authentication
Use preemptive authentication except in server versions where it is n…
This commit is contained in:
		
						commit
						71bdd1d035
					
				| @ -42,10 +42,10 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials { | ||||
|         mAuthenticationPreemptive = true; | ||||
|     } | ||||
| 
 | ||||
|     public OwnCloudBasicCredentials(String username, String password, boolean sessionEnabled) { | ||||
|     public OwnCloudBasicCredentials(String username, String password, boolean preemptiveMode) { | ||||
|         mUsername = username != null ? username : ""; | ||||
|         mPassword = password != null ? password : ""; | ||||
|         mAuthenticationPreemptive = !sessionEnabled; | ||||
|         mAuthenticationPreemptive = preemptiveMode; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  | ||||
| @ -121,7 +121,7 @@ public class OwnCloudClientFactory { | ||||
|                 OwnCloudCredentialsFactory.newBasicCredentials( | ||||
|                     username, | ||||
|                     password, | ||||
|                     (version != null && version.isSessionMonitoringSupported()) | ||||
|                     (version != null && version.isPreemptiveAuthenticationPreferred()) | ||||
|                 ) | ||||
|             ); | ||||
| 
 | ||||
| @ -201,7 +201,7 @@ public class OwnCloudClientFactory { | ||||
|                 OwnCloudCredentialsFactory.newBasicCredentials( | ||||
|                     username, | ||||
|                     password, | ||||
|                     (version != null && version.isSessionMonitoringSupported()) | ||||
|                     (version != null && version.isPreemptiveAuthenticationPreferred()) | ||||
|                 ) | ||||
|             ); | ||||
|         } | ||||
|  | ||||
| @ -35,9 +35,9 @@ public class OwnCloudCredentialsFactory { | ||||
|     } | ||||
| 
 | ||||
|     public static OwnCloudCredentials newBasicCredentials( | ||||
|         String username, String password, boolean sessionEnabled | ||||
|         String username, String password, boolean preemptiveMode | ||||
|     ) { | ||||
|         return new OwnCloudBasicCredentials(username, password, sessionEnabled); | ||||
|         return new OwnCloudBasicCredentials(username, password, preemptiveMode); | ||||
|     } | ||||
| 
 | ||||
|     public static OwnCloudCredentials newBearerCredentials(String authToken) { | ||||
|  | ||||
| @ -230,7 +230,7 @@ public class AccountUtils { | ||||
|             credentials = OwnCloudCredentialsFactory.newBasicCredentials( | ||||
|                 username, | ||||
|                 password, | ||||
|                 version.isSessionMonitoringSupported() | ||||
|                 version.isPreemptiveAuthenticationPreferred() | ||||
|             ); | ||||
|         } | ||||
| 
 | ||||
|  | ||||
| @ -55,6 +55,9 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> { | ||||
| 
 | ||||
|     private static final int MINIMUM_VERSION_WITH_SESSION_MONITORING = 0x09010000;   // 9.1 | ||||
| 
 | ||||
|     private static final int MINIMUM_VERSION_WITH_SESSION_MONITORING_WORKING_IN_PREEMPTIVE_MODE = 0x09010301; | ||||
|       // 9.1.3.1, final 9.1.3: https://github.com/owncloud/core/commit/f9a867b70c217463289a741d4d26079eb2a80dfd | ||||
| 
 | ||||
|     private static final int MAX_DOTS = 3; | ||||
| 
 | ||||
|     // format is in version | ||||
| @ -168,4 +171,18 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> { | ||||
|     public boolean isSessionMonitoringSupported() { | ||||
|         return (mVersion >= MINIMUM_VERSION_WITH_SESSION_MONITORING); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * From OC 9.1 session tracking is a feature, but to get it working in the OC app we need the preemptive | ||||
|      * mode of basic authentication is disabled. This changes in OC 9.1.3, where preemptive mode is compatible | ||||
|      * with session tracking again. | ||||
|      * | ||||
|      * @return      True for every version before 9.1 and from 9.1.3, false otherwise | ||||
|      */ | ||||
|     public boolean isPreemptiveAuthenticationPreferred() { | ||||
|         return ( | ||||
|                 (mVersion < MINIMUM_VERSION_WITH_SESSION_MONITORING) || | ||||
|                 (mVersion >= MINIMUM_VERSION_WITH_SESSION_MONITORING_WORKING_IN_PREEMPTIVE_MODE) | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user