Python - Autenticazione HTTP

L'autenticazione è il processo per determinare se la richiesta proviene da un utente valido che dispone dei privilegi necessari per utilizzare il sistema. Nel mondo delle reti di computer questo è un requisito fondamentale poiché molti sistemi continuano a interagire tra loro e un meccanismo adeguato deve garantire che avvengano solo interazioni valide tra questi programmi.

I nomi dei moduli python requestsdispone di funzionalità integrate per chiamare varie API fornite dalle app Web di servizio insieme alle credenziali dell'utente. Queste credenziali devono essere incorporate nel programma chiamante. Se le API lo verificano correttamente, viene eseguito un accesso valido.

Richieste di installazione

Installiamo il modulo python richiesto denominato richieste per l'esecuzione del programma di autenticazione.

pip install requests

Autenticazione su Github

Di seguito vediamo un semplice meccanismo di autenticazione che coinvolge solo il nome utente e la password. Una risposta positiva indica un accesso valido.

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

Quando eseguiamo il programma sopra, otteniamo il seguente output:

 
      

Autenticazione su Twitter

Possiamo anche eseguire un programma per utilizzare l'API di Twitter ed eseguire correttamente l'accesso utilizzando il codice seguente. Utilizziamo il metodo OAuth1 disponibile nel modulo delle richieste per elaborare i parametri richiesti dall'API di Twitter. Come possiamo vedere, il modulo delle richieste è in grado di gestire un meccanismo di autenticazione più complesso che coinvolge chiavi e token piuttosto che solo il meccanismo di nome utente e password.

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)

Quando eseguiamo il programma sopra, otteniamo il seguente output:

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

Ma utilizzando i valori corretti per i parametri OAuth1 si ottiene una risposta positiva.