From 6752b25b8d85952ca9505ab9dea799aa84e3e4b3 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Mon, 3 Aug 2015 11:20:05 +0200 Subject: [PATCH 1/2] Added username to OwnCloudSamlSsoCredentials --- .../android/lib/common/OwnCloudClientFactory.java | 14 +++++++------- .../lib/common/OwnCloudCredentialsFactory.java | 4 ++-- .../lib/common/OwnCloudSamlSsoCredentials.java | 8 +++++--- .../android/lib/common/accounts/AccountUtils.java | 7 ++++--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java index bc6d61c5..740aed54 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java @@ -82,8 +82,9 @@ public class OwnCloudClientFactory { boolean isSamlSso = am.getUserData(account, AccountUtils.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null; OwnCloudClient client = createOwnCloudClient(baseUri, appContext, !isSamlSso); - - if (isOauth2) { + + String username = account.name.substring(0, account.name.lastIndexOf('@')); + if (isOauth2) { String accessToken = am.blockingGetAuthToken( account, AccountTypeUtils.getAuthTokenTypeAccessToken(account.type), @@ -100,11 +101,10 @@ public class OwnCloudClientFactory { false); client.setCredentials( - OwnCloudCredentialsFactory.newSamlSsoCredentials(accessToken) + OwnCloudCredentialsFactory.newSamlSsoCredentials(username, accessToken) ); } else { - String username = account.name.substring(0, account.name.lastIndexOf('@')); //String password = am.getPassword(account); String password = am.blockingGetAuthToken( account, @@ -136,7 +136,8 @@ public class OwnCloudClientFactory { boolean isSamlSso = am.getUserData(account, AccountUtils.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null; OwnCloudClient client = createOwnCloudClient(baseUri, appContext, !isSamlSso); - + + String username = account.name.substring(0, account.name.lastIndexOf('@')); if (isOauth2) { // TODO avoid a call to getUserData here AccountManagerFuture future = am.getAuthToken( account, @@ -166,12 +167,11 @@ public class OwnCloudClientFactory { String accessToken = result.getString(AccountManager.KEY_AUTHTOKEN); if (accessToken == null) throw new AuthenticatorException("WTF!"); client.setCredentials( - OwnCloudCredentialsFactory.newSamlSsoCredentials(accessToken) + OwnCloudCredentialsFactory.newSamlSsoCredentials(username, accessToken) ); } else { - String username = account.name.substring(0, account.name.lastIndexOf('@')); //String password = am.getPassword(account); //String password = am.blockingGetAuthToken(account, MainApp.getAuthTokenTypePass(), // false); diff --git a/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java b/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java index c1632cde..e854fd67 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java +++ b/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java @@ -36,8 +36,8 @@ public class OwnCloudCredentialsFactory { return new OwnCloudBearerCredentials(authToken); } - public static OwnCloudCredentials newSamlSsoCredentials(String sessionCookie) { - return new OwnCloudSamlSsoCredentials(sessionCookie); + public static OwnCloudCredentials newSamlSsoCredentials(String username, String sessionCookie) { + return new OwnCloudSamlSsoCredentials(username, sessionCookie); } public static final OwnCloudCredentials getAnonymousCredentials() { diff --git a/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java b/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java index 16c1686e..e2d67ee8 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java +++ b/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java @@ -30,9 +30,11 @@ import android.net.Uri; public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { + private String mUsername; private String mSessionCookie; - public OwnCloudSamlSsoCredentials(String sessionCookie) { + public OwnCloudSamlSsoCredentials(String username, String sessionCookie) { + mUsername = username != null ? username : ""; mSessionCookie = sessionCookie != null ? sessionCookie : ""; } @@ -63,8 +65,8 @@ public class OwnCloudSamlSsoCredentials implements OwnCloudCredentials { @Override public String getUsername() { - // its unknown - return null; + // not relevant for authentication, but relevant for informational purposes + return mUsername; } @Override diff --git a/src/com/owncloud/android/lib/common/accounts/AccountUtils.java b/src/com/owncloud/android/lib/common/accounts/AccountUtils.java index 6d2b033e..62eeed7b 100644 --- a/src/com/owncloud/android/lib/common/accounts/AccountUtils.java +++ b/src/com/owncloud/android/lib/common/accounts/AccountUtils.java @@ -167,7 +167,9 @@ public class AccountUtils { boolean isSamlSso = am.getUserData( account, AccountUtils.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null; - + + String username = account.name.substring(0, account.name.lastIndexOf('@')); + if (isOauth2) { String accessToken = am.blockingGetAuthToken( account, @@ -182,10 +184,9 @@ public class AccountUtils { AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(account.type), false); - credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials(accessToken); + credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials(username, accessToken); } else { - String username = account.name.substring(0, account.name.lastIndexOf('@')); String password = am.blockingGetAuthToken( account, AccountTypeUtils.getAuthTokenTypePass(account.type), From 1fa8e79b3fbf3e255f62484aa5fbf33f2ce35f1a Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Mon, 3 Aug 2015 11:40:18 +0200 Subject: [PATCH 2/2] Fixed unit tests --- .../android/lib/test_project/test/OwnCloudClientTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_client/tests/src/com/owncloud/android/lib/test_project/test/OwnCloudClientTest.java b/test_client/tests/src/com/owncloud/android/lib/test_project/test/OwnCloudClientTest.java index 5328e9cf..e11aff8a 100644 --- a/test_client/tests/src/com/owncloud/android/lib/test_project/test/OwnCloudClientTest.java +++ b/test_client/tests/src/com/owncloud/android/lib/test_project/test/OwnCloudClientTest.java @@ -135,7 +135,7 @@ public class OwnCloudClientTest extends AndroidTestCase { client.setCredentials(credentials); assertEquals("Bearer credentials not set", credentials, client.getCredentials()); - credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials("samlSessionCookie=124"); + credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials("user", "samlSessionCookie=124"); client.setCredentials(credentials); assertEquals("SAML2 session credentials not set", credentials, client.getCredentials());