Python Language Authentification


Exemple

Authentification HTTP simple

L'authentification HTTP simple peut être réalisée avec les éléments suivants:

from requests import post

foo = post('http://natas0.natas.labs.overthewire.org', auth=('natas0', 'natas0'))

C'est techniquement court pour ce qui suit:

from requests import post
from requests.auth import HTTPBasicAuth

foo = post('http://natas0.natas.labs.overthewire.org', auth=HTTPBasicAuth('natas0', 'natas0'))

Authentification HTTP Digest

L’authentification HTTP Digest se fait de manière très similaire, Requests fournit un objet différent pour cela:

from requests import post
from requests.auth import HTTPDigestAuth

foo = post('http://natas0.natas.labs.overthewire.org', auth=HTTPDigestAuth('natas0', 'natas0'))

Authentification personnalisée

Dans certains cas, les mécanismes d'authentification intégrés peuvent ne pas suffire, imaginez cet exemple:

Un serveur est configuré pour accepter l'authentification si l'expéditeur dispose de la chaîne d'agent utilisateur appropriée, d'une certaine valeur d'en-tête et fournit les informations d'identification correctes via l'authentification de base HTTP. Pour y parvenir, une classe d'authentification personnalisée doit être préparée, sous-classant AuthBase, qui est la base pour les implémentations d'authentification Requests:

from requests.auth import AuthBase
from requests.auth import _basic_auth_str
from requests._internal_utils import to_native_string

class CustomAuth(AuthBase):

    def __init__(self, secret_header, user_agent , username, password):
        # setup any auth-related data here
        self.secret_header =  secret_header
        self.user_agent = user_agent
        self.username = username
        self.password = password

    def __call__(self, r):
        # modify and return the request
        r.headers['X-Secret'] = self.secret_header
        r.headers['User-Agent'] = self.user_agent
        r.headers['Authorization'] = _basic_auth_str(self.username, self.password)
        
        return r

Cela peut ensuite être utilisé avec le code suivant:

foo = get('http://test.com/admin', auth=CustomAuth('SecretHeader', 'CustomUserAgent', 'user', 'password' ))