Skip to main content

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

Project description

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

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

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.

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