Я создаю настраиваемую систему управления пользователями, в которой все данные приложения должны находиться на сервере приложений, но телефон должен быть аутентифицирован firebase. Когда новый пользователь регистрируется в системе, происходит аутентификация телефона Firebase. При успешной аутентификации из firebase регистрационные данные поступают на сервер через API. Теперь проблема в том, как мне проверить на стороне сервера, что номер телефона аутентифицирован firebase или нет? Если я разрешаю регистрацию без проверки подлинности Firebase на стороне сервера, запрос API может быть кем-то подделан. В настоящее время я использую kreait/firebase-php ^4.18 Firebase SDK для PHP.
Поток, который я использую прямо сейчас, показан ниже
, и поток, который я хочу реализовать, также может быть задан как

Обновление 25.09.2019
Библиотека Kreait\Firebase помогла реализовать поток, как указано в ответе @jeromegamez в принятом ответе. Однако Kreait\Firebase не поддерживает проверку idToken для устройства ios.
Устройство IOS имеет идентификатор Google idToken, а не идентификатор firebase IdToken, и, следовательно, Kreait\Firebase не смог его проверить. Краткий выпуск дан в посте Недопустимый идентификатор idToken Firebase IOS kid Исключение в серверной части, а verifyIdToken в Gmail Auth.






Когда пользователь впервые успешно проходит аутентификацию со своим номером телефона, номер телефона сохраняется в записи пользователя в списке пользователей аутентификации Firebase и может считаться проверенным.
Как только номер телефона связан с пользователем в вашей базе данных Auth, вы можете быть уверены, что
Вы не следует предполагаете, что этот номер телефона теперь "подтвержден". Как указано на официальных страницах документации Firebase:
Security concerns
Authentication using only a phone number, while convenient, is less secure than the other available methods, because possession of a phone number can be easily transferred between users. Also, on devices with multiple user profiles, any user that can receive SMS messages can sign in to an account using the device's phone number.
If you use phone number based sign-in in your app, you should offer it alongside more secure sign-in methods, and inform users of the security tradeoffs of using phone number sign-in.
Source: https://firebase.google.com/docs/auth/web/phone-auth#security-concerns
PS: Единственный другой способ добавить номер телефона пользователю — через Admin SDK, и здесь вы несете ответственность за то, чтобы номер телефона принадлежал пользователю.
PSS: Насколько мне известно (и проверено), API-интерфейсы Firebase REST не предоставляют информацию о «подтвержденном номере телефона».
это не связано с раскрытием сведений о проверенном номере телефона. Я работаю параллельно с Firebase и своим сервером. Когда пользователь проверяет свой телефон, в случае успеха он вызывает мой оставшийся API с этим номером телефона, проблема заключается в том, как мне убедиться, что номер телефона проверен firebase или нет в реализации на стороне сервера?
Если это ваше приложение для мобильного телефона и приложение на стороне сервера, вы должны быть в состоянии доверять себе. Пользователь проверяет свой телефон из вашего приложения, затем вы отправляете (подтвержденный) номер телефона на серверную часть. В своем бэкэнде вы проверяете с помощью Firebase API, что номера телефонов совпадают, и все готово.
Что делать, если какой-либо пользователь декодирует приложение и получает API, вызываемый при успешной аутентификации. Этот API также может работать с Postman.
Вы должны защитить свой API. Проблема, которую вы описываете, применима к любому приложению — в веб-приложении вам даже не нужно декомпилировать приложение, а просто загляните в сетевую консоль. В этом суть всех процедур аутентификации: обеспечение того, чтобы тому, кто пытается что-то сделать, разрешено это делать.
@jeromegamez. Я понимаю озабоченность КиранМании. Обычно API защищен токеном доступа приложения после входа пользователя в систему. Но в этом случае пользователи находятся между процессом аутентификации (поэтому мы аутентифицируем их номер телефона), поэтому API пока не может быть защищен.
API Firebase Rest имеет метод для этого.
На устройстве, после того, как пользователь аутентифицирован и у вас есть объект User, чтобы получить токен для проверки, вы можете вызвать
getIdToken()getIdToken()getIdToken()Затем с помощью этого токена с временным идентификатором вы можете отправить POST-запрос на https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY] (API_KEY является «Ключом веб-API» проекта Firebase), чтобы получить информацию о пользователе, которая будет включать phoneNumber владельца токена.
Таким образом, вы можете проверить на стороне сервера, что у владельца токена есть этот конкретный номер телефона.
Именно то, что я искал! Не удалось использовать предложенный Firebase способ проверки ( firebase.google.com/docs/auth/admin/… ), потому что наш бэкенд - это платформа php, и они не предоставляют для нее библиотеки проверки. Они предоставляют немного информации о ручной проверке этого токена JWT, но... черт возьми.
Я забыл упомянуть, что первый поток уязвим для ложной регистрации.