Есть ли способ авторизовать пользователя в firebase auth, используя специальный токен, зашифрованный с помощью биометрических данных, срок действия которых превышает 1 час? - PullRequest
0 голосов
/ 14 июля 2020

Мой вариант использования заключается в том, что пользователь аутентифицируется на настраиваемом сервере и получает обратно настраиваемый токен firebase для входа в систему аутентификации firebase с помощью SignInWithCustomToken. Когда приложение закрыто, пользователь должен выйти из firebase Auth, поскольку мне не нужны долгоживущие сеансы без повторной аутентификации. Чтобы снова войти в систему, я хочу, чтобы пользователь использовал тот же пользовательский токен для входа в систему с помощью SignInWithCustomToken без необходимости повторной аутентификации на сервере до истечения срока действия пользовательского токена (например, 6 месяцев). Это связано с тем, что я хочу зашифровать этот пользовательский токен с помощью биометрии, чтобы пользователю нужно было использовать биометрию только для расшифровки пользовательского токена и снова войти в систему с ним SignInWithCustomToken. Это бессмысленно, если пользовательский токен длится всего 1 час, так как им нужно будет проходить аутентификацию на сервере почти все время, чтобы получить новый пользовательский токен.

Я подумал о двух возможных подходах для достижения этого .

  1. В документации говорится, что токен, созданный с помощью CreateCustomToken, длится не более 1 часа. Можно ли будет создать свой собственный токен JWT https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_a_third -party_jwt_library Где я установил время истечения более 1 часа, или SignInWithCustomToken отклонит его?
  2. Когда пользователь аутентифицируется против собственного сервера возвращается обычный токен JWT с более длительным сроком действия, чем 1 час. Затем клиент отправит на сервер еще один запрос с этим токеном, чтобы получить токен, созданный с помощью CreateCustomToken. Когда клиент выходит из приложения и пытается снова войти в систему, он отправляет обратно обычный токен JWT на сервер, и, если срок его действия не истек, они возвращают другой токен, созданный с помощью CreateCustomToken, с тем же Uid, поэтому другой пользователь firebase не создано. Однако это может привести к большим накладным расходам при входе в систему, учитывая, что я использую облачные функции в качестве серверной части.

Есть ли лучшие подходы, которые подходят моему варианту использования?

...