Skip to main content

python-dciauth

DCI authentication module used by dci-control-server and python-dciclient

This section shows example programs written in python that illustrate how to work with Signature Version 2 in DCI. The algorithm used by dciauth is identical to Signature Version 4 in AWS.

Authentication example:

Create a HmacAuthBase object to give to python requests module

from dciauth.signature import HmacAuthBase

auth = HmacAuthBase(
    access_key="access_key",
    secret_key="secret_key",
    region="us-east-1",
    service="api",
    service_key="aws4_request",
    algorithm="AWS4-HMAC-SHA256",
)

GET

import requests

requests.get("http://api.distributed-ci.io/api/v1/jobs", auth=auth)

POST

import requests

requests.post("http://api.distributed-ci.io/api/v1/users", auth=auth, json={"name": "user 1"})

Validation example

import flask
from dciauth.signature import FlaskHmacSignature

@app.route("/api/protected", methods=["GET"])
def get_protected():
    auth_scheme = flask.request.headers.get("Authorization").split(" ")[0]
    if auth_scheme == "AWS4-HMAC-SHA256":
        signature = FlaskHmacSignature(
            {
                "service_name": "api",
                "service_key": "aws4_request",
                "region_name": "us-east-1",
                "algorithm": "AWS4-HMAC-SHA256",
            }
        ).add_request(flask.request)
        assert signature.access_key == "access_key"
        if not signature.is_valid(secret_key="secret_key"):
            return "ko", 401
        return "ok", 200
    return "ko", 400

Using POSTMAN

If you are using POSTMAN to discover DCI API you can use the following parameters with the AWS Signature authorization header:

GET https://api.distributed-ci.io/api/v1/identity
AccessKey=<DCI_CLIENT_ID>
SecretKey=<DCI_API_SECRET>
AWS Region="BHS3"
Service Name="api"

License

Apache 2.0

Author Information

Distributed-CI Team distributed-ci@redhat.com

Metadata

Release files for dciauth 4.0.0.post202410241336

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dciauth 4.0.0.post202410241336
File Size Uploaded Provenance Actions
dciauth-4.0.0.post202410241336.tar.gz 12.0 kB Without provenance Details for dciauth-4.0.0.post202410241336.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dciauth 4.0.0.post202410241336
File Interpreter ABI Platform Actions
dciauth-4.0.0.post202410241336-py3-none-any.whl Python 3 none any Details for dciauth-4.0.0.post202410241336-py3-none-any.whl

Total release size: 25.5 kB

Release files / dciauth-4.0.0.post202410241336.tar.gz

Download URL dciauth-4.0.0.post202410241336.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
85a2c3b00c9b9a59f6d13b0b74df5be808f28187d7808bd077f19f159b0a7561
BLAKE2b-256 checksum
How to use checksums
bab393eb45a300264b0e971058f3ad6711f122600cd5aac9346140a20505b807
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.3

Release files / dciauth-4.0.0.post202410241336-py3-none-any.whl

Download URL dciauth-4.0.0.post202410241336-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48f1945c6d245c8ae3c4220394916bf5b58b4e45cbbc073045fb4f68ad6a7f8e
BLAKE2b-256 checksum
How to use checksums
a412c13cc254c35dd3faacd6071a2920062b2cdc35a89387dc79850977737d82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.3

Security for dciauth 4.0.0.post202410241336

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page