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), 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());