diff --git a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java index bc6d61c5887..740aed54e50 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClientFactory.java @@ -82,8 +82,9 @@ public static OwnCloudClient createOwnCloudClient (Account account, Context appC 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 static OwnCloudClient createOwnCloudClient (Account account, Context appC 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 static OwnCloudClient createOwnCloudClient (Account account, Context appC 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 static OwnCloudClient createOwnCloudClient (Account account, Context appC 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 c1632cde41f..e854fd677fd 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java +++ b/src/com/owncloud/android/lib/common/OwnCloudCredentialsFactory.java @@ -36,8 +36,8 @@ public static OwnCloudCredentials newBearerCredentials(String authToken) { 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 16c1686e8de..e2d67ee8354 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java +++ b/src/com/owncloud/android/lib/common/OwnCloudSamlSsoCredentials.java @@ -30,9 +30,11 @@ 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 void applyTo(OwnCloudClient client) { @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 6d2b033e101..62eeed7b13d 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 static OwnCloudCredentials getCredentialsForAccount(Context context, Acco 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 static OwnCloudCredentials getCredentialsForAccount(Context context, Acco 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 5328e9cfa3e..e11aff8a3af 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 void testGetSetCredentials() { 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());