GoogleAuthUtil как проверка подлинности устройства для iOS, чтобы проверить, что запросы исходят от устройства Apple

Google Auth Util позволяет разработчикам Android проверить, что запросы, полученные их серверами, поступают с устройства Android.

Устройство получает токен от Google на основе учетной записи Google, связанной с устройством, затем запросы с устройства отправляются с этим токеном на сервер, где сервер затем запрашивает у Google, действительно ли токен действителен. Любые ключи хранятся вне источника приложения, поэтому злоумышленники не могут взломать приложение и получить доступ к закрытым ключам и запросам fudge на сервер.

Я искал какое-то время, и кажется, что Apple не предлагает ничего подобного, но я надеялся, что есть что-то функционально подобное, которое я мог бы использовать для iOS.

Ответ 1

Update

Хотя подразумеваемое предположение в вопросе кажется разумным, на самом деле это не так. Дальнейшие чтения источников Google показывают, что целью Auth Util (и более поздней Firebase) является аутентификация пользователя и защита сервера. Учитывая, что сервер видит только сетевой трафик, он может реплицировать трафик с другого клиента.

Кроме того, определение Android довольно размыто, поскольку OEM модифицирует базовую ОС в соответствии с их потребностями.

Вероятно, это неверно

Один из вариантов - использовать Apple Push Notification. Вы можете зарегистрировать устройство и указать уведомления для него. Когда ваше приложение загружается, он отправляет запрос на сервер с его маркером и получает то, что по существу является куки файлом сеанса через APN.

Одно предупреждение: он не зашифрован. Вы можете легко решить эту проблему, отправив случайно запрограммированный симметричный ключ в запросе. Получаемый файл cookie будет зашифрован на сервере и дешифрован с использованием того же ключа на устройстве iOS.

Это решает проблему хранения ключей в источнике и доказывает, что запросы поступают с устройства iOS.

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

Одна из последних проблем заключается в том, что APN также может использоваться для регистрации устройств OSX. Мне не удалось выяснить, как их исключить (пока).

Отказ от ответственности: это был долгий день написания спецификаций. Я достаточно уверен в механизме первоначальной регистрации устройства iOS с использованием APN. Возможно, я ошибался в части шифрования. Если да, нежно промойте, пожалуйста. Забастовкa >