Процесс входа в Swift ios touch id

В моем приложении пользователь может аутентифицироваться/войти в мой сервер, используя адрес электронной почты/пароль. Теперь я думаю о внедрении Touch ID.

Но меня смущает процесс входа в систему с использованием сенсорного идентификатора.

Используя приведенный ниже код, я могу легко аутентифицировать пользователя:

func authenticateUser() {
    let context = LAContext()
    var error: NSError?

    if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
        let reason = "Identify yourself!"

        context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) {
            [unowned self] success, authenticationError in

            DispatchQueue.main.async {
                if success {
                    self.runSecretCode()
                } else {
                    let ac = UIAlertController(title: "Authentication failed", message: "Sorry!", preferredStyle: .alert)
                    ac.addAction(UIAlertAction(title: "OK", style: .default))
                    self.present(ac, animated: true)
                }
            }
        }
    } else {
        let ac = UIAlertController(title: "Touch ID not available", message: "Your device is not configured for Touch ID.", preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    }
}

Но я не знаю, что это за пользователь.

Итак, когда пользователь создает учетную запись, должен ли я хранить что-то вроде идентификатора устройства (если он существует) в моей БД, тогда, когда пользователи используют сенсорный идентификатор, я могу проверить, какой это идентификатор устройства, а затем войти в систему?


person user2636197    schedule 08.12.2016    source источник


Ответы (1)


Насколько я понимаю, Touch ID действует только как привратник к самому нативному приложению, а не к API.

Несмотря ни на что, ваш пользователь должен будет пройти аутентификацию с помощью API хотя бы один раз, чтобы получить какой-то секретный токен (JWT и т. д.), который затем будет сохраняться при закрытии/открытии приложения. Touch ID должен быть успешным, прежде чем ваше приложение начнет совершать вызовы API, но API будет проверять только секрет.

Таким образом, вы можете сохранить логин пользователя без сохранения учетных данных, и у вас есть Touch ID в приложении, чтобы нежелательный пользователь не поднял разблокированный телефон и просто не открыл банковское приложение.

Я так понимаю, но если я ошибаюсь, поправьте меня кто-нибудь.

person paul jerman    schedule 12.12.2018