Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8f6e5ad authored by masensio's avatar masensio
Browse files

Merge pull request #80 from owncloud/username_in_saml_sso

Added username to SAML SSO credentials
parents 3b9777c5 1fa8e79b
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public class OwnCloudClientFactory {
                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) {
            String accessToken = am.blockingGetAuthToken(
            		account, 
@@ -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, 
@@ -137,6 +137,7 @@ public class OwnCloudClientFactory {
                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<Bundle> 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);
+2 −2
Original line number Diff line number Diff line
@@ -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() {
+5 −3
Original line number Diff line number Diff line
@@ -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
+4 −3
Original line number Diff line number Diff line
@@ -168,6 +168,8 @@ public class AccountUtils {
        		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), 
+1 −1
Original line number Diff line number Diff line
@@ -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());