Skip to main content

A package which generates a GizmoSQL token (JWT) for auth testing

Project description

Generate GizmoSQL (JWT) Token - by GizmoData

generate-gizmosql-token-ci Supported Python Versions PyPI version PyPI Downloads

A utility for generating Bearer Authentication Tokens (Javascript Web Tokens - JWTs) for testing GizmoSQL (JWT) 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}_{role}.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

generate_gizmosql_token-0.0.5.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

generate_gizmosql_token-0.0.5-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file generate_gizmosql_token-0.0.5.tar.gz.

File metadata

  • Download URL: generate_gizmosql_token-0.0.5.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for generate_gizmosql_token-0.0.5.tar.gz
Algorithm Hash digest
SHA256 7d17ca0ebb95d7a7b9caae82e084ba4d565961497072c2844f800703e8abdd30
MD5 fe245942a3b91c51b2e1d0e66c8fb79e
BLAKE2b-256 868700119bf67c21e9bc1e24bf9fdc63ac88780a6fd1f88579ca1065e9c99c37

See more details on using hashes here.

Provenance

The following attestation bundles were made for generate_gizmosql_token-0.0.5.tar.gz:

Publisher: ci.yml on gizmodata/generate-gizmosql-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file generate_gizmosql_token-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for generate_gizmosql_token-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1b8f87e015d8ba3a0c6c17fc33694a46689b9de4d08e3f8d8997be3a11e7ec79
MD5 f24046961ed3670d082e6a431e50b75c
BLAKE2b-256 cf3bf2e00ea349df446916f237ca802312ee449ef4b8d9e5ef6c820177ffe08f

See more details on using hashes here.

Provenance

The following attestation bundles were made for generate_gizmosql_token-0.0.5-py3-none-any.whl:

Publisher: ci.yml on gizmodata/generate-gizmosql-token

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page