mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-08 08:26:10 +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