Firebase Auth Inivite Only Scheme : How to communicate the credentials to user?

流过昼夜 提交于 2020-01-03 15:36:11

问题


Here's my question. To access our app, the users must be invited.

This means, we use an admin web app to create the user account in Firebase and we send him an invite to download the app and use it.

Now the next phase, how can we send to the newly created user his credentials?

Our first idea was to use a temporary password. We could send the password by email to the user and ask him to redefine his password at his first logging.

His this a good idea? I guess it's not

Is there a better way?

Thanks for the help. T


回答1:


There is no way to prevent users from authenticating with Firebase Authentication. So instead of depending on pre-creating of the accounts, you should ensure that only authorized users have access to the data.

For example, when using the Firebase Database, you could keep a list of authorized users in the database:

/authorizedEmails
  t4ncr3d3@hisdomain,com: true
  puf@hisdomain,com: true

And then you'd check the auth.email variable against this list in the database's security rules.

Instead of pre-creating the account, you could then simply email the user an invite to the app. E.g. an email with a link like http://myapp.mydomain.com/signup.html?email=t4ncr3d3@hisdomain.com

Then when they click the link, pre-populate the sign-up form with the email address you sent the message to and call createUserWithEmailAndPassword().




回答2:


You could use the new (as of Nov 2016) firebase-admin library (java or node) to programmatically create users from your server side - see this link for details.

After that, you could send the email and password to the user via email, and allow only email based password logins. Unfortunately, you can't force uninvited people to stop authenticating with your app, as they could manually invoke the APIs used to create a new account on their own, as you see on the same page. However, you are under no obligation to provide a login mechanism via your UI. They would have to use their browser to type and invoke the JS needed to create the account.

If you are OK with people forcibly creating accounts, but you would like to lock down their access, you could do something similar to what Frank mentions in another answer by using admin control of the database to restrict access to those users you have created and invited with a special flag in the database (that only you can modify using the admin SDK) that acts as a gateway into your app. If you perform the security properly, that should prevent those whom you didn't invite from using the app, even if they can effectively authenticate with it.



来源:https://stackoverflow.com/questions/40832918/firebase-auth-inivite-only-scheme-how-to-communicate-the-credentials-to-user

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!