Demandes - Authentification

Ce chapitre abordera les types d'authentification disponibles dans le module Requêtes.

Nous allons discuter de ce qui suit -

  • Fonctionnement de l'authentification dans les requêtes HTTP
  • Authentification de base
  • Authentification Digest
  • Authentification OAuth2

Fonctionnement de l'authentification dans les requêtes HTTP

L'authentification HTTP se fait côté serveur et demande des informations d'authentification telles que le nom d'utilisateur, le mot de passe lorsque le client demande une URL. Il s'agit d'une sécurité supplémentaire pour la demande et la réponse échangées entre le client et le serveur.

Du côté client, ces informations d'authentification supplémentaires, c'est-à-dire le nom d'utilisateur et le mot de passe, peuvent être envoyées dans les en-têtes, qui seront ensuite validés côté serveur. La réponse sera délivrée du côté serveur uniquement lorsque l'authentification est valide.

La bibliothèque Requests a l'authentification la plus couramment utilisée dans requests.auth , qui sont l'authentification de base ( HTTPBasicAuth ) et l'authentification Digest ( HTTPDigestAuth ).

Authentification de base

Il s'agit de la forme la plus simple de fournir une authentification au serveur. Pour travailler avec l'authentification de base, nous allons utiliser la classe HTTPBasicAuth disponible avec la bibliothèque de requêtes.

Exemple

Voici un exemple pratique de son utilisation.

import requests
from requests.auth import HTTPBasicAuth
response_data = 
requests.get('httpbin.org/basic-auth/admin/admin123', 
auth = HTTPDigestAuth('admin', 'admin123'))
print(response_data.text)

Nous appelons l'url, https://httpbin.org/basic-auth/admin/admin123avec l'utilisateur comme admin et le mot de passe comme admin123 .

Donc, cette URL ne fonctionnera pas sans authentification, c'est-à-dire utilisateur et mot de passe. Une fois que vous avez donné l'authentification à l'aide du paramètre auth, seul le serveur rendra la réponse.

Production

E:\prequests>python makeRequest.py
{
   "authenticated": true,
   "user": "admin"
}

Authentification Digest

Il s'agit d'une autre forme d'authentification disponible avec les demandes. Nous allons utiliser la classe HTTPDigestAuth à partir des requêtes.

Exemple

import requests
from requests.auth import HTTPDigestAuth
response_data = 
requests.get('https://httpbin.org/digest-auth/auth/admin/admin123', 
auth = HTTPDigestAuth('admin', 'admin123'))
print(response_data.text)

Production

E:\prequests>python makeRequest.py
{
   "authenticated": true,
   "user": "admin"
}

Authentification OAuth2

Pour utiliser l'authentification OAuth2, nous avons besoin de la bibliothèque «requests_oauth2». Pour installer «requests_oauth2», procédez comme suit -

pip install requests_oauth2

L'affichage dans votre terminal lors de l'installation sera quelque chose comme indiqué ci-dessous -

E:\prequests>pip install requests_oauth2
Collecting requests_oauth2
Downloading https://files.pythonhosted.org/packages/52/dc/01c3c75e6e7341a2c7a9
71d111d7105df230ddb74b5d4e10a3dabb61750c/requests-oauth2-0.3.0.tar.gz
Requirement already satisfied: requests in c:\users\xyz\appdata\local\programs
\python\python37\lib\site-packages (from requests_oauth2) (2.22.0)
Requirement already satisfied: six in c:\users\xyz\appdata\local\programs\pyth
on\python37\lib\site-packages (from requests_oauth2) (1.12.0)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\use
rs\xyz\appdata\local\programs\python\python37\lib\site-packages (from requests
->requests_oauth2) (1.25.3)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\xyz\appdata\loca
l\programs\python\python37\lib\site-packages (from requests->requests_oauth2) (2
019.3.9)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\xyz\appdata\l
ocal\programs\python\python37\lib\site-packages (from requests->requests_oauth2)
(3.0.4)
Requirement already satisfied: idna<2.9,>=2.5 in c:\users\xyz\appdata\local\pr
ograms\python\python37\lib\site-packages (from requests->requests_oauth2) (2.8)
Building wheels for collected packages: requests-oauth2
Building wheel for requests-oauth2 (setup.py) ... done
Stored in directory: C:\Users\xyz\AppData\Local\pip\Cache\wheels\90\ef\b4\43
3743cbbc488463491da7df510d41c4e5aa28213caeedd586
Successfully built requests-oauth2

Nous avons fini d'installer «requests-oauth2». Pour utiliser les API de Google, Twitter, nous avons besoin de son consentement et la même chose est faite en utilisant l'authentification OAuth2.

Pour l'authentification OAuth2, nous aurons besoin d'un ID client et d'une clé secrète. Les détails sur la façon de l'obtenir sont mentionnés surhttps://developers.google.com/identity/protocols/OAuth2.

Plus tard, connectez-vous à Google API Console, disponible sur https://console.developers.google.com/et récupérez l'identifiant du client et la clé secrète.

Exemple

Voici un exemple d'utilisation de "requests-oauth2".

import requests
from requests_oauth2.services import GoogleClient
google_auth = GoogleClient(
   client_id="xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
   redirect_uri="http://localhost/auth/success.html",
)
a = google_auth.authorize_url(
   scope=["profile", "email"],
   response_type="code",
)
res = requests.get(a)
print(res.url)

Nous ne pourrons pas rediriger vers l'URL donnée, car elle doit se connecter au compte Gmail, mais ici, vous verrez à partir de l'exemple, que google_auth fonctionne et que l'URL autorisée est donnée.

Production

E:\prequests>python oauthRequest.py
https://accounts.google.com/o/oauth2/auth?redirect_uri=
http%3A%2F%2Flocalhost%2Fauth%2Fsuccess.html&
client_id=xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&
scope=profile+email&response_type=code