1

I am working on an app with a locally stored mongodb instance and I am strugling with the design of how app-users should be stored in order to implement in-app login.

In one hand, Mongodb provides a solid access control and authentication for db users, with the ability to define roles, actions and privileges. So I feel tempted to leverage this to implement my app-users storage. On the other hand, considering it uses a system collection, I get the feeling, and from at least this thread I am getting it right, that this user management provided by mongodb should be used to manage db-user accounts only (that would be software that access the database), not app-user accounts (people who use the software that access the database).

So I am thinking my storage schema should look something like this:

system.
    users #for db-users (apps and services)
    other system cols
    ...
myappdb.
    users #for app-users (actual people using the app)
    other app cols
    ...

So, in order to log into my app, I need a first set of credentials (db-user) so the app can log into my db so I can retrieve app-user credentials in order to log this person into my app when they type their own credentials.

Question 1: does this make sense?

Question 2: if yes, how do I hide my db-user credentials then? because I get the feeling this should not be hardcoded and I am not finding a way to make the connection to the database without it being so.

Question 3: if not, what would be an appropriate way to deal with this? links and articles are welcome.

Guga Figueiredo
  • 292
  • 4
  • 18
  • __Question 1__: Yes, this makes sense. __Question 2:__ Hide your db-user credentials away in environment variables or files. See [12-factor app config guidelines](https://12factor.net/config) – Oluwafemi Sule Apr 07 '18 at 12:44
  • This looks like what I was looking for. Thanks, I'll definitely take a look – Guga Figueiredo Apr 09 '18 at 21:25

0 Answers0