Stream: large-data

Topic: rdm-integration globus setup


view this post on Zulip William Hahn (May 05 2026 at 17:13):

Hi all, I'm testing out @Eryk Kulikowski's rdm-integration tool and having some difficulty setting up globus. Please see https://github.com/libis/rdm-integration/blob/main/GLOBUS_INTEGRATION.md

Which client ID should oauth_client_id point to? Is this a portal/science gateway, or something else? Also, this document states that the plugins section should be inserted into backend_config.json, but I see plugins as an attribute of frontend_config.json in the readme. Any help is appreciated, thank you!

view this post on Zulip Eryk Kulikowski (May 05 2026 at 20:49):

Hi William, I checked this more carefully. oauth_client_id should be the ID of a Globus Confidential Client.
In the Globus web app, the path is: app.globus.org → Settings → Developers → Add/select Project → Apps → Add App → Add Confidential Client

Use the ID of that Confidential Client as oauth_client_id. The matching client secret is also needed, but it should go in the OAuth secrets file used by the backend, not in frontend_config.json.
So yes, this is closer to a portal/science-gateway style setup than a native/PKCE app. rdm-integration does the OAuth token exchange server-side, so it needs both a client ID and a client secret.
You are also right about the documentation. The plugins section belongs in frontend_config.json; the statement in GLOBUS_INTEGRATION.md saying to put it in backend_config.json is wrong (I will correct this). The backend config should instead point to the OAuth secrets file and contain backend settings such as the Dataverse URL, Globus endpoint, storage settings, and pathToOauthSecrets.

There are example config files in the repo under conf/: frontend_config.json, backend_config.json, and example_oauth_secrets.json. These are the files used by the local make up setup; make init copies them into docker-volumes/integration/.... However, I checked and the current examples do not include a complete Globus plugin example yet. They show the general structure, but I still need to add a proper Globus example.

There is also some Dataverse-side configuration that has to line up, including :UploadMethods, :DownloadMethods, :GlobusAppUrl, and the storage JVM/MicroProfile settings for S3/Globus. In particular, Dataverse needs the Globus transfer endpoint and its own Globus token for the storage backend, while rdm-integration separately needs the Globus Confidential Client ID/secret for user OAuth.

I’ll be at the Dataverse Community Meeting 2026 in Barcelona next week. If you’ll be there too, I’m happy to help set it up in person.

view this post on Zulip Eryk Kulikowski (May 05 2026 at 21:06):

I also updated GLOBUS_INTEGRATION.md to clarify this setup.

view this post on Zulip William Hahn (May 05 2026 at 21:30):

Much appreciated, Eryk. I should have time tomorrow morning to give this a go, but this already seems to clarify my questions. I'll keep this thread updated...
And yes, I'll be in Barcelona! That'd be great if I continue to hit a wall.


Last updated: May 30 2026 at 06:18 UTC