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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dciauth-4.0.1.post202510211222.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

dciauth-4.0.1.post202510211222-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file dciauth-4.0.1.post202510211222.tar.gz.

File metadata

  • Download URL: dciauth-4.0.1.post202510211222.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for dciauth-4.0.1.post202510211222.tar.gz
Algorithm Hash digest
SHA256 75e40b544b497dda0e8f91eb28e31e04929c5036750fe7aef330367132ada14d
MD5 e0b8c19ee615656af7e6eb88eb7d2e29
BLAKE2b-256 580029b62d4a6f96c398266686154f6bc169ecce1ab620f9bb382e21c38efce1

See more details on using hashes here.

File details

Details for the file dciauth-4.0.1.post202510211222-py3-none-any.whl.

File metadata

File hashes

Hashes for dciauth-4.0.1.post202510211222-py3-none-any.whl
Algorithm Hash digest
SHA256 5e0d0c5812eab9ceeb1102139903a03c72a4963567529d98d19da0db7a2fa961
MD5 73c5eab03eddc7e162b7fa5d6b614506
BLAKE2b-256 86bfaa8aa8715040229f90a44ce01e866b603f4c373a2767a0b03537c9a164b9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.0.1.post202510211222 This release

2 files

3.0.2

2 files

3.0.1

2 files

2.1.7

2 files

2.1.6

2 files

2.1.5

2 files

2.1.3

2 files

2.1.2

2 files

2.1.1

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.0.1

2 files

1.0.0

2 files

0.1.2

2 files

0.1.0

2 files

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