A Python (Flask-based) web application demonstrating how to build a Modern Research Data Portal using the Globus platform.
A Python (Flask-based) web application demonstrating how to build a Modern Research Data Portal using the Globus platform.
This repository contains two separate server applications. The first, the "portal," is an example "research portal"
that demonstrates how to authenticate users with Globus Auth, how to make requests against the Globus Transfer API, and how to interact with an HTTPS-enabled Globus collection. All of the portal code can be found in the portal/
directory.
The second application, the "Service," is an example "resource server" that demonstrates how a research portal can offload tasks to a separate service that has the capability to perform tasks on behalf of users. All of the Service code can be found in the service/
directory.
Note
: Both applications are configured with client credentials created for demo purposes only.
The Globus Sample Data Portal requires Python 3.9 or newer.
https://localhost:5000/authcallback
(note: if using EC2 localhost
should be replaced with the IP address of your instance).urn:globus:auth:scope:transfer.api.globus.org:all
, openid
, profile
, email
portal/portal.conf
in the PORTAL_CLIENT_ID
and PORTAL_CLIENT_SECRET
properties.service/service.conf
where the PORTAL_CLIENT_ID
is used to validate the access token that the Portal sends to the Service.git clone https://github.com/globus/globus-sample-data-portal
cd globus-sample-data-portal
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
./run_portal.py
https://localhost:5000
./run_service.py
https://localhost:5100/api
sudo apt-get update
sudo apt-get install python3-pip
sudo pip install virtualenv
sudo apt-get install git
git clone https://github.com/globus/globus-sample-data-portal
cd globus-sample-data-portal
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
./run_portal.py
https://localhost:5000
./run_service.py
https://localhost:5100/api
pip install virtualenv
git clone https://github.com/globus/globus-sample-data-portal
cd globus-sample-data-portal
virtualenv venv
venv\Scripts\activate
pip install -r requirements.txt
python run_portal.py
https://localhost:5000
python run_service.py
https://localhost:5100/api
git clone https://github.com/globus/globus-sample-data-portal
cd globus-sample-data-portal
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
sed -i 's/localhost/0.0.0.0/' run_portal.py
sed -i '4,//s/localhost/YOUR_IP/' portal/portal.conf
echo "SESSION_COOKIE_DOMAIN = 'YOUR_IP'" >> portal/portal.conf
./run_portal.py
https://YOUR_IP:5000/
./run_service.py
https://localhost:5100/api
Deploying and fully configuring Nginx is out of scope of this document. However, if you wish to use Nginx as a reverse proxy, you can use the location block below:
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Prefix /;
proxy_pass https://localhost:5000/;
}