Source code for auth0.authentication.base

from __future__ import annotations

from typing import Any

from auth0.rest import RestClient, RestClientOptions
from auth0.types import RequestData, TimeoutType

from .client_authentication import add_client_authentication

UNKNOWN_ERROR = "a0.sdk.internal.unknown"


[docs]class AuthenticationBase: """Base authentication object providing simple REST methods. Args: domain (str): The domain of your Auth0 tenant client_id (str): Your application's client ID client_secret (str, optional): Your application's client secret client_assertion_signing_key (str, optional): Private key used to sign the client assertion JWT. client_assertion_signing_alg (str, optional): Algorithm used to sign the client assertion JWT (defaults to 'RS256'). telemetry (bool, optional): Enable or disable telemetry (defaults to True) timeout (float or tuple, optional): Change the requests connect and read timeout. Pass a tuple to specify both values separately or a float to set both to it. (defaults to 5.0 for both) protocol (str, optional): Useful for testing. (defaults to 'https') """ def __init__( self, domain: str, client_id: str, client_secret: str | None = None, client_assertion_signing_key: str | None = None, client_assertion_signing_alg: str | None = None, telemetry: bool = True, timeout: TimeoutType = 5.0, protocol: str = "https", ) -> None: self.domain = domain self.client_id = client_id self.client_secret = client_secret self.client_assertion_signing_key = client_assertion_signing_key self.client_assertion_signing_alg = client_assertion_signing_alg self.protocol = protocol self.client = RestClient( None, options=RestClientOptions(telemetry=telemetry, timeout=timeout, retries=0), ) def _add_client_authentication(self, payload: dict[str, Any]) -> dict[str, Any]: return add_client_authentication( payload, self.domain, self.client_id, self.client_secret, self.client_assertion_signing_key, self.client_assertion_signing_alg, )
[docs] def post( self, url: str, data: RequestData | None = None, headers: dict[str, str] | None = None, ) -> Any: return self.client.post(url, data=data, headers=headers)
[docs] def authenticated_post( self, url: str, data: dict[str, Any], headers: dict[str, str] | None = None, ) -> Any: return self.client.post( url, data=self._add_client_authentication(data), headers=headers )
[docs] def get( self, url: str, params: dict[str, Any] | None = None, headers: dict[str, str] | None = None, ) -> Any: return self.client.get(url, params, headers)