Получение учетных данных пользователя (имя пользователя и пароль) через хранилище ключей Android с отпечатком пальца

Я создаю приложение для Android, в котором мне нужно аутентифицировать пользователя с помощью имени пользователя и пароля (на задней панели) с помощью API-интерфейса Fingerprint.

Вот мое понимание того, что мне нужно сделать в самых простых терминах.

  1. При входе в систему после того, как пользователь ввел имя пользователя и пароль и успешно прошел аутентификацию в бэкэнде, я создаю и сохраняю конкретное хранилище ключей с этими учетными данными в androidkeystore.

  2. При следующем входе в систему, если пользователь успешно проходит аутентификацию с помощью отпечатка пальца, извлеките учетные данные (имя пользователя и пароль) из хранилища ключей Android и аутентифицируйте пользователя на серверной части с помощью этих учетных данных.

Я следил за: http://www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial

Это хороший пример того, как использовать API отпечатков пальцев для аутентификации пользователя на устройстве. Но как мне вернуть учетные данные, чтобы я мог аутентифицировать пользователя с помощью серверной части?

Есть ли какие-либо шаги, предложения или подробные примеры того, что я хочу сделать?

Спасибо.


comment
Возможно, вам поможет эта статья: sitepoint.com/   -  person roborg    schedule 01.12.2017


Ответы (1)


В предлагаемом вами решении серверная часть по-прежнему получает имя пользователя и пароль каждый раз, когда пользователь входит в систему. Это означает, что ваше приложение должно хранить имя пользователя и пароль пользователя. Возможно, было бы благоразумно избежать этого. Например, если позже пароль будет изменен, ваше приложение не сможет войти в систему. Кроме того, если вы не проявите особую осторожность, имя пользователя и пароль могут быть скопированы и/или извлечены с помощью отладки по USB с помощью adb backup.

Альтернативным решением является создание клиентом пары ключей хранилища ключей Android, которая требует аутентификации пользователя (аутентификации по отпечатку пальца) для каждого использования закрытого ключа. Затем серверная часть предлагает операцию регистрации открытого ключа для аутентификации в качестве учетной записи пользователя. Операция регистрации требует открытого ключа, имени пользователя и пароля. Если имя пользователя и пароль подтверждены, для учетной записи регистрируется открытый ключ. Затем операция входа в систему расширяется для поддержки аутентификации клиента, когда клиент подписывает с использованием соответствующего закрытого ключа вызов/одноразовый номер, сгенерированный серверной частью. Если подпись подтверждается, серверная часть предполагает, что это все тот же клиент, который первоначально зарегистрировал открытый ключ, используя имя пользователя и пароль.

person Alex Klyubin    schedule 13.07.2016