Firebase email / пароль аутентификация + странность проверки - PullRequest
0 голосов
/ 20 февраля 2019

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

Позвольте мне объяснить пример для Сначала Google авторизуется .

Сначала пользователь входит в свою учетную запись Google (скажем, адрес электронной почты op@op.com) и авторизует ваше приложение.Затем вы создаете учетные данные, используя полученные от них токены, и обмениваете их с помощью Firebase, чтобы зарегистрировать пользователя в Firebase.Пользователь должен существовать в Firebase, чтобы вы могли использовать службу проверки электронной почты Firebase (поскольку единственный способ получить информацию о том, подтверждено ли письмо, - это проверить объект currentUser на клиенте, поэтому вам необходимо войти в систему, чтобыпроверьте, подтверждена ли их электронная почта. Вы не можете вызвать метод Auth с адресом электронной почты, чтобы проверить, подтвержден он или нет).Поэтому, когда вы входите в Firebase, вы отправляете ему ссылку для проверки, и все хорошо.Вы можете настроить представление на своем клиенте, проверив объект пользователя для проверки электронной почты.Здесь важно отметить, что некоторые другие пользователи, которым известен адрес электронной почты этого пользователя, не могут зарегистрироваться, используя op@op.com в вашем сервисе: это потому, что им нужно войти в Google с этим адресом электронной почты, чтобы зарегистрироваться.

Facebookв этом отношении аналогично входу в систему Google.

Однако, для электронной почты / пароля , любой может взять чужую электронную почту и создать с ней учетную запись!И поскольку вы не можете отправить ссылку для подтверждения до того, как пользователь будет зарегистрирован в Firebase, вы, по сути, позволяете кому-либо в мире «блокировать» адреса электронной почты в вашем сервисе.Сначала я пытался обеспечить проверку электронной почты до ее регистрации в Firebase, но быстро понял, что мне нужен пользователь в Firebase для проверки электронной почты.

Я что-то упустил или это ожидаемое поведение?Если это действительно так, то я могу просто не разрешить вход по электронной почте / паролю в свое приложение.

Примечание : еще одна идея, которую я имел, состояла в том, чтобы сделать проверку, отправив им 6-digit код и поддерживать мою собственную систему проверки в Firebase.Но тогда я не могу добавить к нему какие-либо правила безопасности, поскольку любому клиенту, не вошедшему в систему, потребуется доступ к нему ==> потенциальное злоупотребление системой.

Заранее спасибо за попытку прочитать подробное объяснение..

1 Ответ

0 голосов
/ 21 февраля 2019

Таким образом, даже если учетную запись можно создать непроверенной, вы все равно можете заблокировать доступ пользователей, используя правила безопасности.Последнее имеет значение и контролирует доступ.Вот пример того, как вы можете сделать это с правилами базы данных в реальном времени:

{
  "rules": {
    "users": {
      "$user": {
        ".read": "auth.token.email_verified == true && auth.uid === $user",
        ".write": "auth.token.email_verified == true && auth.uid === $user"
      }
    }
  }
}

Вы также можете сделать это самостоятельно, если вы проверяете токен ID на своем сервере, анализируя полезную нагрузку токена и проверяя email_verified.

Таким образом, даже если учетная запись пользователя создана, если пользователь не подтвержден, у них не будет доступа к данным вашего приложения / сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...