跳转到主要内容

由dci-control-server和python-dciclient使用的DCI认证模块

项目描述

python-dciauth

由dci-control-server和python-dciclient使用的DCI认证模块

本节展示了用python编写的示例程序,说明如何使用DCI的签名版本2。dciauth使用的算法与AWS的签名版本4相同。

认证示例

GET

import requests

from dciauth.v2.headers import generate_headers

headers = generate_headers(
    {"endpoint": "/api/v1/jobs"},
    {"access_key": "remoteci/client_id", "secret_key": "secret"},
)
requests.get("http://api.distributed-ci.io/api/v1/jobs", headers=headers)

POST

import requests

from dciauth.v2.headers import generate_headers

data = {"name": "user 1"}
headers = generate_headers(
    {
        "method": "POST",
        "endpoint": "http://api.distributed-ci.io/api/v1/users",
        "data": data,
    },
    {"access_key": "remoteci/client_id", "secret_key": "secret"},
)
requests.post("http://api.distributed-ci.io/api/v1/users", headers=headers, json=data)

验证示例

    from flask import request

    from dciauth.v2.headers import parse_headers
    from dciauth.v2.signature import is_valid

    valid, error_message = is_valid(
        {
            "method": request.method,
            "endpoint": request.path,
            "data": request.data,
            "params": request.args.to_dict(flat=True),
        },
        {"secret_key": "secret"},
        parse_headers(request.headers),
    )
    if not valid:
        raise Exception("Authentication failed: %s" % error_message)

使用POSTMAN

如果您正在使用POSTMAN来发现DCI API,您可以使用以下参数与AWS签名授权头一起使用

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

许可证

Apache 2.0

作者信息

Distributed-CI团队 distributed-ci@redhat.com

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

dciauth-3.0.2.post202311101437.tar.gz (11.5 kB 查看哈希值)

上传时间

构建分布

dciauth-3.0.2.post202311101437-py3-none-any.whl (13.2 kB 查看哈希值)

上传时间 Python 3

由以下支持