Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Thredds Deny Recursive permission not working as intended on "old upgraded" server. #632

Open
tlvu opened this issue Nov 21, 2024 · 6 comments
Assignees
Labels
bug Problem, error, or invalid behaviour

Comments

@tlvu
Copy link
Contributor

tlvu commented Nov 21, 2024

Describe the bug
I am not supposed to be able to browse this link https://pavics.ouranos.ca/twitcher/ows/proxy/thredds/catalog/birdhouse/testdata/secure/catalog.html?dataset=birdhouse/testdata/secure/tasmax_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-200612.nc since the path "/birdhouse/testdata/secure" has "Deny, Recursive" permission set on it.

On only that, I was able to download the .nc raw file. The only path that actually has a "Deny, Recursive" permission working is "Opendap" path on that file. All other paths I can access.

Jenkins was passing on production server all this time because the notebook only checks for the Opendap path and the Opendap path is the only path being "denied" as expected.

The weirder problem is I deployed a fresh server on the exact same birdhouse-deploy commit and "Deny, Recursive" was able to block everything, ex: https://lvu8.ouranos.ca/twitcher/ows/proxy/thredds/catalog/birdhouse/testdata/secure/catalog.html?dataset=birdhouse/testdata/secure/tasmax_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-200612.nc (exact same file, just fresh server).

So it seems that on a production server where we have done many DB upgrades, some "cruft" is left behind and confused Twitcher/Magpie? Another difference is on the production server we have 800+ users whereas my fresh test server only has 3 users (admin, anonymous, authtest).

Found accidentally when testing for bird-house/birdhouse-deploy#478.

To Reproduce
Steps to reproduce the behavior:
Deploy the stack at this commit bird-house/birdhouse-deploy@eefea61

Expected behavior
Should get "Access to service is forbidden" for this link https://pavics.ouranos.ca/twitcher/ows/proxy/thredds/catalog/birdhouse/testdata/secure/catalog.html?dataset=birdhouse/testdata/secure/tasmax_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-200612.nc

Screenshots
Correct behavior on my fresh server
Screenshot from 2024-11-21 01-24-58

Wrong behavior on production server
Screenshot from 2024-11-21 01-29-04

Magpie config on production server is properly set to "Deny, Recursive"
Screenshot from 2024-11-21 00-57-43

Desktop (please complete the following information):

@tlvu tlvu added the bug Problem, error, or invalid behaviour label Nov 21, 2024
@fmigneault
Copy link
Collaborator

I'm running the same server version 1.42.2 and Magpie 3.38.0 on Hirondelle, and the following causes the expected "Access to service is forbidden." response:

https://hirondelle.crim.ca/twitcher/ows/proxy/thredds/catalog/birdhouse/testdata/secure/catalog.html

Attempting the download via https://hirondelle.crim.ca/twitcher/ows/proxy/thredds/fileServer/birdhouse/testdata/secure/tasmax_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-200612.nc also causes the forbidden access.

What does the thredds service custom-configuration look like?

{469561A3-F33C-4673-89B1-687938E0A0F3}

Also, check if the anonymous user has any "allow recursive" applied. User permissions would override the group permissions.

Those are the only thing I can think of that would cause different behaviors.

@tlvu
Copy link
Contributor Author

tlvu commented Nov 21, 2024

What does the thredds service custom-configuration look like?

Screenshot from 2024-11-21 15-15-53

Also, check if the anonymous user has any "allow recursive" applied. User permissions would override the group permissions.

Screenshot from 2024-11-21 15-19-01

@fmigneault
Copy link
Collaborator

What happens if you click the ❔ button. Is it ❌ or ✅ ?
This is supposed to do the same function call that Twitcher will do to resolve the request.

@tlvu
Copy link
Contributor Author

tlvu commented Nov 22, 2024

What happens if you click the ❔ button. Is it ❌ or ✅ ? This is supposed to do the same function call that Twitcher will do to resolve the request.

Screenshot from 2024-11-21 20-46-32

@fmigneault
Copy link
Collaborator

fmigneault commented Nov 22, 2024

Ok. That's really weird. All seems correct.
I guess you will need to enable DEBUG logs (both Twitcher and Magpie, in both their respective INI files) and check the permissions being resolved when doing the request to see what is actually happening. I don't know what to investigate because I cannot replicate on my end.

@tlvu
Copy link
Contributor Author

tlvu commented Nov 26, 2024

I guess you will need to enable DEBUG logs (both Twitcher and Magpie, in both their respective INI files)

OK. I will also try to replicate the Magpie DB from prod to my test VM that is currently fresh and do not have the bug. If I can reproduce the error on my test VM, this means the trigger for the bug is in the DB data and not in the code, or rather the code did not handle a special case on data that has been upgraded multiples times.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Problem, error, or invalid behaviour
Projects
None yet
Development

No branches or pull requests

2 participants