Как проверить значение realUserStatus при входе в систему с помощью Apple

При первом входе с помощью функции «Войти через Apple» он возвращает значение realUserStatus как часть ASAuthorizationAppleIDCredential в клиенте iOS. Это значение указывает, уверена ли Apple, что пользователь настоящий, или нет (например, это сценарий).

У меня вопрос: как я могу проверить значение realUserStatus в моей системе аутентификации на сервере? Потому что realUserStatus возвращается клиенту iOS, и клиент должен сообщить моему серверу, бот это или нет! Как я могу узнать, что это не просто сценарий, сообщающий серверу, что это реально?

Изменить (дополнительное пояснение): в документации Apple говорится: «Вы можете пропустить любые дополнительные проверки на мошенничество или CAPTCHA, которые обычно использует ваше приложение». но когда мы используем CAPTCHA, провайдер может проверить ответ, чего либо Apple не делает, либо я нигде не могу найти, как это сделать!


person Hamoonist    schedule 12.12.2019    source источник


Ответы (3)


Я только что закончил разговор с инженером Apple в онлайн-лаборатории WWDC.

Итак, начиная с iOS 14, realUserIndicator включен в токен идентификации и может быть проверен на сервере.

Для iOS 13 у них нет решения.

person Hamoonist    schedule 25.06.2020

Этот флаг служит базовой первой проверкой, предназначенной для использования вашим веб-интерфейсом. Серверы идентификации вернут это значение только тогда, когда пользователь впервые использует «Войти с помощью Apple» в вашем приложении.

Если вы хотите проверить пользователя на бэкэнде, вы должны использовать токен идентификации пользователя (JWT). Вы получаете его с серверов Apple, когда пользователь входит в систему (читайте здесь: https://developer.apple.com/documentation/signinwithapplerestapi/authenticating_users_with_sign_in_with_apple).

Если вы хотите проверить пользователя в предстоящих сеансах в качестве существующего пользователя (без необходимости входа пользователя каждый раз), вам следует разработать собственную систему для создания, сохранения и проверки токена. Другой вариант - использовать фреймворк аутентификации Firebase, который поддерживает вход через Apple.

person brkeyal    schedule 25.02.2020
comment
Спасибо, но разве realUserStatus не является полностью избыточным? В WWDC сказали, что это способ помочь нам поймать скрипт против реального пользователя. Но если мой бэкэнд не может проверить значение realUserStatus, то как он может помочь мне определить, настоящий пользователь или нет? - person Hamoonist; 01.03.2020
comment
И Firebase Auth ничего не делает с realUserStatus. - person Hamoonist; 01.03.2020

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

В документе Apple говорится: после того, как ваше приложение получит информацию о пользователе, вы можете проверить связанный с ним токен идентификации на сервере, чтобы убедиться, что срок действия токена не истек, и убедиться, что он не был подделан или воспроизведен в вашем приложении. Для получения информации о получении токена идентификации см. Аутентификация пользователей с помощью входа в систему с помощью Apple.

https://developer.apple.com/documentation/sign_in_with_apple.com/documentation/sign_in_with_in_applea/sign_in_with_in_applea/sign_in_with_in_applea/sign_in_with_applea/sign >

person Batikan    schedule 23.04.2020
comment
JWT содержит только адрес электронной почты. Ничего о реальном индикаторе пользователя. - person Hamoonist; 18.05.2020
comment
Они добавили realUserIndicator для iOS 14+. - person Hamoonist; 26.11.2020