camicroscope / Distro

Docker distribution of camicroscope and all its components
http://camicroscope.org
BSD 3-Clause "New" or "Revised" License
28 stars 145 forks source link

google authentication does not work / no other way to add a user? #204

Open catweis opened 1 year ago

catweis commented 1 year ago

After installation (current Distro, installation with docker compose), I need to log in. The proposed way is using the google-account. However, this does not work. There is the "error 400". Based on the google page, there is a problem with the authentication solution used on the webpage?

Looking for other ways of adding users, I found in the documentation a solution with an add_user-file; which does not exist? Do I have to write it? And if so, which fields are required?

birm commented 1 year ago

It looks like I have some documentation to update.

The format for users in mongo is like

{
    "_id" : ObjectId("63a35103811aa405ae1e73a2"),
    "email" : "user@camicroscope.org",
    "userType" : "Admin",
    "userFilter" : "['**']"
}

You can add a user directly to mongo, or alternatively temporary disable security and go to /apps/signup/signup.html to add a user there.

If you're getting an issue from google itself, please let me know.

catweis commented 1 year ago

Thank you for your fast response. Unfortunately, I do not know how to access mongo (within the docker container) and how to add then a user. And the other user adding version from the documentation (with the adduser.json) does not work since there is no such file, and I do not know where to place it.

birm commented 1 year ago

We had to remove the "easy" method of user addition due to some kubernetes/openshift constraints about our indexer container.

Anyway, to get a mongo shell, run docker exec -it ca-mongo mongo and use camic to get into the right database.

psankhe28 commented 1 year ago

I added user according to the query given above but I am not able to login. Could you please suggest any solution to this? @birm

birm commented 1 year ago

I neglected to mention the easiest way to add a user; either run develop.yml or disable security (temporarily or otherwise; see the environment variable in develop.yml under caracal) then simply add the user using the user sign up page (/apps/signup/signup.html)

The email should match the email from a google id token.

catweis commented 1 year ago

Thank you very much for your suggestions. The version with the development.yml file works. But allowing everybody to add a user etc. does not seems fine to me. Therefore, a more secure solution seems to be mandatory.

However, the other mentioned methods do not work for me:

1 I can access the mongo database, but I have no clue how to add a user there. With db.addUser and your suggestions above, it does not work.

2 I do not know how to disable the security temporarily. I am sorry.

Maybe the question at psankhe28: How did you add a user?

psankhe28 commented 1 year ago

Thank you very much for your suggestions. The version with the development.yml file works. But allowing everybody to add a user etc. does not seems fine to me. Therefore, a more secure solution seems to be mandatory.

However, the other mentioned methods do not work for me: #1 I can access the mongo database, but I have no clue how to add a user there. With db.addUser and your suggestions above, it does not work. #2 I do not know how to disable the security temporarily. I am sorry.

Maybe the question at psankhe28: How did you add a user?

I tried by adding the user directly in mongo database. But its not working. Have you found any solution to this? @catweis

CoToYo commented 1 year ago

Hi! I am Tingyuan (Leon). Thank you for previous discussion, it inspired me a lot.

By running develop.yml , I successfully sign up a temporary account.

I also tried the other two potential methods, however, as @catweis said, they do not work.

The followings are my tries on these two methods:

Log: image

I tried modifying both DISABLE_SEC and ALLOW_PUBLIC to value of true, and made sure configs in .env were run by re-executing setup_script.sh under Caracal, but it still did not worked.

In short, for now, it seems like running develop.yml is the only way to access the system.

I know it is very likely that there is something wrong with my operations, so I will be extremely happy if anyone could point me in the right direction! Thank you so much!