Feature Request overzicht

Feature request

Python 3 voorbeeld toevoegen aan authentication docs voor API

requirements.txt:

cryptography
requests

Authentication.py:

import json
import requests
import time
from base64 import b64encode
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding, utils
from cryptography.hazmat.backends import default_backend

class Authenticate:
    def __init__(self, request_body: dict, private_key: str):
        self.url = 'https://api.transip.nl/v6/auth'
        self.request_body = request_body
        self.private_key = private_key

    def sign(self) -> str:
        key_object = serialization.load_pem_private_key(
            self.private_key.encode('utf-8'),
            password=None,
            backend=default_backend()
        )

        signature = key_object.sign(
            json.dumps(self.request_body).encode('utf-8'),
            padding.PKCS1v15(),
            hashes.SHA512()
        )

        return b64encode(signature).decode('utf-8')

    def authenticate(self) -> str:
        headers = {'Signature': self.sign()}
        response = requests.post(self.url, json=self.request_body, headers=headers)
        return response.text

if __name__ == '__main__':
    """ RESULT: {"token":"...."} """
    request_body = {
        "login": "test-user",
        "nonce": str(time.time()),
        "read_only": False,
        "expiration_time": "30 minutes",
        "label": "add description",
        "global_key": True
    }
    private_key = """
-----BEGIN PRIVATE KEY-----
your-key==
-----END PRIVATE KEY-----"""

    authorize = Authenticate(request_body, private_key)
    result = authorize.authenticate()
    print(result)
Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op