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.post202603121510

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.post202603121510
File Size Uploaded
dciauth-4.0.1.post202603121510.tar.gz 12.0 kB Details

Built distribution (wheel)

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

Total release size: 25.6 kB

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

Download URL dciauth-4.0.1.post202603121510.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b36cb0daaf3c6e36252fd29539b19477495cdd5e4d94e288d2512805d47d6c9d
BLAKE2b-256 checksum
How to use checksums
7e5d8a517464fa844971c99686204fab58ff7fc50bdf6a59388ad4dc1d280120
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / dciauth-4.0.1.post202603121510-py3-none-any.whl

Download URL dciauth-4.0.1.post202603121510-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e23135cc4a1802a383baf3428eb9f3b3fdc75f398920af2f6a35d3662dd1bc59
BLAKE2b-256 checksum
How to use checksums
ceba76efc9ec366bb8e1f823b2cdec57c4bb7ae27ba5eaa46327efc75667fcb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7
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