A package which generates a GizmoSQL token (JWT) for auth testing
Project description
generate-gizmosql-token
A utility for generating Bearer Authentication Tokens (Javascript Web Tokens - JWTs) for testing GizmoSQL token authentication.
Setup (to run locally)
Install Python package
from PyPi
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
. .venv/bin/activate
# Upgrade pip
pip install --upgrade pip
# Install the package (in editable mode)
pip install generate-gizmosql-token
from source - for development
git clone https://github.com/gizmodata/generate-gizmosql-token
cd generate-gizmosql-token
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
. .venv/bin/activate
# Upgrade pip, setuptools, and wheel
pip install --upgrade pip setuptools wheel
# Install the package (in editable mode)
pip install --editable .[dev]
Note
For the following commands - if you are running from source and using --editable mode (for development purposes) - you will need to set the PYTHONPATH environment variable as follows:
export PYTHONPATH=$(pwd)/src
Usage Example
generate-gizmosql-token \
--issuer "GizmoData LLC" \
--audience "GizmoSQL Server" \
--subject "philip@gizmodata.com" \
--role "admin" \
--token-lifetime-seconds 86400 \
--output-file-format "output/gizmosql_token_{issuer}_{audience}_{subject}.jwt" \
--private-key-file keys/private_key.pem
Using the generated token with GizmoSQL
Server setup
In order to use the JWT generated by this package, you must start the GizmoSQL server using the public certificate associated with the private key you signed the JWT with using this utility.
Below is an example of starting the GizmoSQL server with TLS and JWT authentication enabled.
Please note - you MUST use the issuer, audience, and the public certificate that matches the private key you used to sign the JWT using this utility in order for the token to be accepted by the server.
gizmosql_server \
--database-filename data/tpch.db \
--username gizmosql_user \
--print-queries \
--tls tls/cert0.pem tls/cert0.key \
--token-allowed-issuer "GizmoData LLC" \
--token-allowed-audience "GizmoSQL Server" \
--token-signature-verify-cert-filename tls/jwt.pem \
--log-format json \
--access-log off
--log-level info
JDBC
You can use the generated token with GizmoSQL via JDBC by appending the token to the JDBC connection string as follows:
jdbc:arrow-flight-sql://hostname:port?useEncryption=true&disableCertificateVerification=true&token=<YOUR_GENERATED_TOKEN>
ADBC
You can use the generated token with GizmoSQL via ADBC using the adbc_driver_flightsql package as follows - if you have set the environment variable GIZMOSQL_TOKEN to the generated token:
import os
from adbc_driver_flightsql import dbapi as gizmosql, DatabaseOptions
with gizmosql.connect(uri="grpc+tls://localhost:31337",
db_kwargs={
DatabaseOptions.AUTHORIZATION_HEADER.value: f"Bearer {os.getenv("GIZMOSQL_TOKEN", "BAD TOKEN!")}",
DatabaseOptions.TLS_SKIP_VERIFY.value: "true",
},
autocommit=True
) as conn:
with conn.cursor() as cur:
print(f"Catalog: {conn.adbc_current_catalog}")
print(f"Schema: {conn.adbc_current_db_schema}")
cur.execute("SELECT * FROM region")
x = cur.fetch_arrow_table()
print(x)
Handy development commands
Generate self-signed certificate and private key for testing purposes
There is a handy shell script (if you clone the repo) in scripts/gen-certs.sh that you can use to generate a self-signed certificate and private key for testing purposes.
scripts/gen-certs.sh
Version management
Bump the version of the application - (you must have installed from source with the [dev] extras)
bumpver update --patch
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file generate_gizmosql_token-0.0.2.tar.gz.
File metadata
- Download URL: generate_gizmosql_token-0.0.2.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dc73e07aad44cddaf2c6d15e477a4f3d02fd4bafa28c16a0b0c6b47a39ef6ab
|
|
| MD5 |
a94c3f35b510113821a240f8be9ef772
|
|
| BLAKE2b-256 |
ba52de6ac36dee07a803672851af368e848cc3a732c93abd2ca4f45209d75316
|
Provenance
The following attestation bundles were made for generate_gizmosql_token-0.0.2.tar.gz:
Publisher:
ci.yml on gizmodata/generate-gizmosql-token
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
generate_gizmosql_token-0.0.2.tar.gz -
Subject digest:
3dc73e07aad44cddaf2c6d15e477a4f3d02fd4bafa28c16a0b0c6b47a39ef6ab - Sigstore transparency entry: 496053482
- Sigstore integration time:
-
Permalink:
gizmodata/generate-gizmosql-token@8384ee6f69db6a2d541a5820f2d32ac858653950 -
Branch / Tag:
refs/tags/0.0.2 - Owner: https://github.com/gizmodata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@8384ee6f69db6a2d541a5820f2d32ac858653950 -
Trigger Event:
push
-
Statement type:
File details
Details for the file generate_gizmosql_token-0.0.2-py3-none-any.whl.
File metadata
- Download URL: generate_gizmosql_token-0.0.2-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4684e408c84711f1574f97de516e9bf75f7aeb47445c3be9ec45abec3116288
|
|
| MD5 |
690a85d319f8c52c57ce79041ff4b182
|
|
| BLAKE2b-256 |
8220b4a27e90b716083a56864025b54595d5aa9ecbf5e5d265912336cf2f66a5
|
Provenance
The following attestation bundles were made for generate_gizmosql_token-0.0.2-py3-none-any.whl:
Publisher:
ci.yml on gizmodata/generate-gizmosql-token
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
generate_gizmosql_token-0.0.2-py3-none-any.whl -
Subject digest:
d4684e408c84711f1574f97de516e9bf75f7aeb47445c3be9ec45abec3116288 - Sigstore transparency entry: 496053492
- Sigstore integration time:
-
Permalink:
gizmodata/generate-gizmosql-token@8384ee6f69db6a2d541a5820f2d32ac858653950 -
Branch / Tag:
refs/tags/0.0.2 - Owner: https://github.com/gizmodata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@8384ee6f69db6a2d541a5820f2d32ac858653950 -
Trigger Event:
push
-
Statement type: