Solicitudes: autenticación

Este capítulo discutirá los tipos de autenticación disponibles en el módulo de Solicitudes.

Vamos a discutir lo siguiente:

  • Trabajo de autenticación en solicitudes HTTP
  • Autenticación básica
  • Autenticación implícita
  • Autenticación OAuth2

Trabajo de autenticación en solicitudes HTTP

La autenticación HTTP está en el lado del servidor solicitando cierta información de autenticación como nombre de usuario, contraseña cuando el cliente solicita una URL. Esta es una seguridad adicional para la solicitud y la respuesta que se intercambian entre el cliente y el servidor.

Desde el lado del cliente, esta información de autenticación adicional, es decir, el nombre de usuario y la contraseña, se pueden enviar en los encabezados, que luego se validarán en el lado del servidor. La respuesta se entregará desde el lado del servidor solo cuando la autenticación sea válida.

La biblioteca de solicitudes tiene la autenticación más utilizada en request.auth , que son la autenticación básica ( HTTPBasicAuth ) y la autenticación implícita ( HTTPDigestAuth ).

Autenticación básica

Esta es la forma más sencilla de proporcionar autenticación al servidor. Para trabajar con autenticación básica, usaremos la clase HTTPBasicAuth disponible con la biblioteca de solicitudes.

Ejemplo

Aquí hay un ejemplo práctico de cómo usarlo.

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)

Estamos llamando a la URL https://httpbin.org/basic-auth/admin/admin123con usuario como administrador y contraseña como admin123 .

Por lo tanto, esta URL no funcionará sin autenticación, es decir, usuario y contraseña. Una vez que otorgue la autenticación utilizando el parámetro de autenticación, solo el servidor devolverá la respuesta.

Salida

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

Autenticación implícita

Esta es otra forma de autenticación disponible con solicitudes. Vamos a hacer uso de la clase HTTPDigestAuth de las solicitudes.

Ejemplo

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)

Salida

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

Autenticación OAuth2

Para usar la autenticación OAuth2, necesitamos la biblioteca "request_oauth2". Para instalar "request_oauth2", haga lo siguiente:

pip install requests_oauth2

La pantalla de su terminal durante la instalación será similar a la que se muestra a continuación:

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

Hemos terminado de instalar "request-oauth2". Para utilizar las API de Google, Twitter necesitamos su consentimiento y lo mismo se hace mediante la autenticación OAuth2.

Para la autenticación OAuth2, necesitaremos un ID de cliente y una clave secreta. Los detalles de cómo conseguirlo se mencionan enhttps://developers.google.com/identity/protocols/OAuth2.

Más tarde, inicie sesión en la consola API de Google, que está disponible en https://console.developers.google.com/y obtenga la identificación del cliente y la clave secreta.

Ejemplo

A continuación, se muestra un ejemplo de cómo utilizar "solicitudes-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)

No podremos redirigir a la URL proporcionada, ya que necesita iniciar sesión en la cuenta de Gmail, pero aquí, verá en el ejemplo, que google_auth funciona y se proporciona la URL autorizada.

Salida

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