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.1.post202411050953

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.1.post202411050953
File Size Uploaded Provenance Actions
dciauth-4.0.1.post202411050953.tar.gz 12.0 kB Without provenance Details for dciauth-4.0.1.post202411050953.tar.gz

Built distribution (wheel)

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

Total release size: 25.6 kB

Release files / dciauth-4.0.1.post202411050953.tar.gz

Download URL dciauth-4.0.1.post202411050953.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
fc650b21cc5857db08f481108ef1f4865967c6682f957f4fa2f55d5b847c5663
BLAKE2b-256 checksum
How to use checksums
5e21c4a1f551bbd9f9e7db6dfdd243a22ec287fc724c9fecadf260d7e3ec5bb7
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.1.post202411050953-py3-none-any.whl

Download URL dciauth-4.0.1.post202411050953-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c95b09d6ec20d11e7e8b62a75eccfecf69f46834f6d809ec2a342bce323fbc7f
BLAKE2b-256 checksum
How to use checksums
0900d3aebd3623bac5f66917bf615972f989a5929f4279d817c25acd9b8e6602
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.1.post202411050953

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