Безопасность - приложение для Android, разрешающее вход в автономный режим только в том случае, если действительный вход в систему в Интернете ранее - PullRequest
3 голосов
/ 19 января 2012

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

Предложение:

  1. запросить правильные учетные данные -> пользователь вводит имя пользователя и пароль

  2. если он-лайн, переходить с токенов oauth,

    а. в случае успеха сохраните зашифрованное имя пользователя AES / пароль + соли
    б. если неудачно, повторно запросите правильные учетные данные

  3. в автономном режиме, используя то же шифрование, что и выше, шифровать комбинацию имя пользователя / пароль

  4. проверка автономных зашифрованных учетных данных по списку недавних успешных сетевых входов, сохраненных на шаге 2а. а. если кредиты соответствуют одной из сохраненных версий, доступ к приложению и локальным данным в автономном режиме
    б. если кредиты не совпадают, повторно запросите правильные кредиты

Вопрос : Поможет ли хранение локально зашифрованных комбо un + pw + salt нарушить безопасность процесса онлайн-входа? Дальнейшие мысли / советы?

Спасибо за участие.

Ответы [ 2 ]

1 голос
/ 20 января 2012

Ваше требование возможно только с общими настройками

public class MySession {
    private SharedPreferences sharedPref;
    private static Editor editor;

    public static final String My_API_KEY = "1234";
    public static final String My_CLIENT_VERSION = "1.0";
    private static final String My_API_TOKEN = "api_token";
    private static final String My_USER_SCREEN_NAME ="profilepic";
    private static final String SHARED = "my_Preferences";

    public MySession(Context context) {
        sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
        editor = sharedPref.edit();
    }
    public void storeToken(String apiToken) {
        editor.putString(My_API_TOKEN, apiToken);       
        editor.commit();
    }
    public String getToken() {
        return sharedPref.getString(My_API_TOKEN,null);     
    }
}
0 голосов
/ 31 октября 2017

Впервые попросите пользователя ввести данные для входа.После аутентификации объедините имя пользователя и пароль и сделайте его md5 / sha1.Сохраните его в общих настройках или в локальной базе данных sqlite.

В следующий раз, когда пользователь находится в автономном режиме, запросите данные для входа в систему, проверьте и проверьте его из того же сохраненного места.

sha1 / md5 - это односторонний способ шифрования ине может быть расшифрован.Таким образом, данные входа в систему всегда будут в безопасности на устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...