Access media files stored in ODK X server without authentication

1. What is the problem? Be very detailed.
I am using BIRT as reporting engine to display my survey data gotten from odk survey (including images). For the text datatype, I just query directly to ODK db, but when I am trying to display image data from url using this format:
http://[ODK SERVER]/AAAA/odktables/default/tables/[TABLE NAME]/ref/uuid:864a6b09-dfb8-4793-b206-48/attachments/[ROW UUID]/file/[FILENAME].jpg

it always return 403 because I didn’t provide authentication data.

Below is my question:
a. How to properly provides auth data when I need to access the media using url?
b. Is there a way to just remove the authentication when accessing media files?

2. What you have you tried to fix the problem?
I check “Allow anonymous retrieval of images, audio and video data (needed for GoogleEarth balloon displays)” on Site Admin but still cannot bypass the authentication.

3. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.
When I run the url on my browser, the authentication pops up and I can insert the auth data. But, I cannot do this when I access it using url from BIRT report.

2 Likes

@aliahadss24 what server are you using?

1 Like

I host odk-x Aggregate 1.4.15 on my AWS ec2 server

1 Like

Under the Site Admin - Permissions or the ODK Tables subtab there should be allow anonymous user. Warning: this could allow anonymous access to more than you want so you should update your permissions in your tables using groups or other permissions.

1 Like

That solve my problem with accessing media files without authentication! Thanks

Need to learn more about the groups and permissions.

1 Like

@W_Brunette just wondering if it is possible to access the image using endpoint where we can supply the user and password? I read it here https://docs.odk-x.org/odk-2-sync-protocol/ that it is possible to access the data using REST protocol, have tried to access odk x resource via REST API, but still unable to get expected response so far. Any help would be appreciated.

Below is my sample request using postman to get privilleges info (I follow the tutorial here: https://docs.odk-x.org/odk-2-sync-protocol/#authenticate-user)

1 Like

I think you might need to add /odktables/ to your URL before you specify /default

1 Like