Я добавляю поддержку аутентификации пользователя в свое приложение. Единственное требование состоит в том, что пользователь должен быть владельцем устройства (приложение не имеет доступа к удаленному сервису и не нуждается в доступе к ключам в связке ключей).
Я прочитал LocalAuthentication
документацию по фреймворку и провел эксперименты. Я знаю, что технически возможно вызвать LocalAuthentication
API для аутентификации пользователя с помощью идентификатора касания/лица, а в случае неудачи вернуться к запросу пользователя ввести код доступа к устройству.
Однако среди всех iOS-приложений, которыми я пользовался, я ни разу не видел ни одного, которое аутентифицирует пользователя таким образом (я имею в виду, используя пароль устройства). Когда я включаю аутентификацию по сенсорному экрану/лицу в этих приложениях, все они просят меня сначала установить более короткий и почти никогда не используемый пароль для конкретного приложения, что, на мой взгляд, не только неудобно, но и небезопасно. Интересно, почему они просто не используют пароль устройства? Есть ли в Apple Store политика, запрещающая это? Будет ли мое приложение отклонено за это? Спасибо за любое объяснение.
ОБНОВЛЕНИЕ:
Согласно этой статье использование связки ключей более безопасно, чем использование LocalAuthentication
, поскольку первое является компонентом системного уровня, а второе — компонентом прикладного уровня. Однако в статье предлагается использовать пароль устройства вместо пароля приложения при доступе к элементам в связке ключей.
Крайне важно, чтобы разработчики настроили контроль доступа к цепочке ключей, чтобы при попытке получить защищенный элемент пользователи должны были аутентифицироваться с помощью кода доступа устройства (и, следовательно, Face ID, если он включен).
kSecAccessControlApplicationPassword
, который используется для защиты ключа в связке ключей? Интересно это знать (я не знал об этом, пока вы не упомянули об этом. Спасибо). Но я сомневаюсь, что приложения iOS (например, Microsoft onedrive) на моем телефоне используют код доступа для конкретного приложения таким образом, потому что, хотя эти приложения сохраняют ключ или пароль в цепочке для ключей, они никогда не предлагают мне ввести код доступа для конкретного приложения при получении ключа. . Единственное использование этого пароля — когда я открываю приложение, но это необязательно, потому что будет достаточно использования идентификатора касания / лица. - person rayx   schedule 08.05.2020LocalAuthentication
для моего приложения, и нет необходимости вводить код доступа для конкретного приложения. Я вернусь и обновлю вопрос, когда успешно отправлю свое приложение (надеюсь, через месяц или около того). - person rayx   schedule 08.05.2020