Python: autenticación HTTP

La autenticación es el proceso de determinar si la solicitud proviene de un usuario válido que tiene los privilegios necesarios para utilizar el sistema. En el mundo de las redes informáticas, este es un requisito muy importante, ya que muchos sistemas siguen interactuando entre sí y se necesita un mecanismo adecuado para garantizar que solo se produzcan interacciones válidas entre estos programas.

Los nombres de los módulos de Python requeststiene una función incorporada para llamar a varias API proporcionadas por las aplicaciones web de servicio junto con las credenciales del usuario. Estas credenciales deben estar integradas en el programa de llamada. Si las API lo verifican correctamente, se produce un inicio de sesión válido.

Instalación de solicitudes

Instalamos el módulo de Python requerido llamado solicitudes para ejecutar el programa de autenticación.

pip install requests

Autenticarse en Github

A continuación, vemos un mecanismo de autenticación simple que involucra solo el nombre de usuario y la contraseña. Una respuesta exitosa indica un inicio de sesión válido.

import requests 
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print r

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

 
      

Autenticarse en Twitter

También podemos ejecutar un programa para usar la API de Twitter y hacer un inicio de sesión exitoso usando el siguiente código. Usamos el método OAuth1 disponible en el módulo de solicitudes para procesar los parámetros requeridos por la API de Twitter. Como podemos ver, el módulo de solicitudes es capaz de manejar mecanismos de autenticación más complejos que involucran claves y tokens en lugar de solo el mecanismo de nombre de usuario y contraseña.

import requests
from requests_oauthlib import OAuth1
url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
auth = OAuth1('YOUR_APP_KEY', 'YOUR_APP_SECRET',
              'USER_OAUTH_TOKEN', 'USER_OAUTH_TOKEN_SECRET')
requests.get(url, auth=auth)

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

{
  "errors": [
    {
      "code": 215,
      "message": "Bad Authentication data."
    }
  ]
}

Pero al usar los valores adecuados para los parámetros de OAuth1, obtiene una respuesta exitosa.