AccountManager и OAuth - как добавить аккаунт? - PullRequest
3 голосов
/ 03 апреля 2011

Мое приложение соединяется с сервером, который использует авторизацию OAuth.Как хранить такие учетные записи в Account Manager?В случае, если у меня есть логин и пароль, он может выглядеть следующим образом:

        Account account = new Account("user1", context.getString(R.string.ACCOUNT_TYPE));
        AccountManager am = AccountManager.get(context);
        if (am.addAccountExplicitly(account, "pass1", null)) {
            result = new Bundle();
            Log.i(TAG, "account: "+account.name+", "+account.type);
            result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
            result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
            activity.setAccountAuthenticatorResult(result);

Но что нужно передать вместо имени пользователя и передать в случае OAuth-аккаунта?И где мне хранить OAuth-секрет?Токен OAuth должен храниться в KEY_AUTHTOKEN?

1 Ответ

0 голосов
/ 07 ноября 2012

Не используйте пароль, который вы могли бы setAuthToken, поместите вместо него токен OAuth:

Важно понимать, что AccountManager не является сервисом шифрования или связкой ключей. Он хранит учетные данные, как вы передаете их, в виде простого текста. На большинстве устройств это не вызывает особого беспокойства, поскольку он хранит их в базе данных, доступной только для пользователя root. Но на рутованном устройстве учетные данные будут доступны для чтения любому пользователю, имеющему доступ к устройству с помощью adb.

Имея это в виду, вы не должны передавать действительный пароль пользователя в AccountManager.addAccountExplicitly (). Вместо этого вы должны хранить криптографически безопасный токен, который будет иметь ограниченное применение для злоумышленника. Если ваши учетные данные защищают что-то ценное, вы должны тщательно продумать что-то подобное.

...