Richieste - Autenticazione
Questo capitolo discuterà i tipi di autenticazione disponibili nel modulo Richieste.
Discuteremo quanto segue:
- Funzionamento dell'autenticazione nelle richieste HTTP
- Autenticazione di base
- Autenticazione digest
- Autenticazione OAuth2
Funzionamento dell'autenticazione nelle richieste HTTP
L'autenticazione HTTP è sul lato server che richiede alcune informazioni di autenticazione come nome utente, password quando il client richiede un URL. Questa è una sicurezza aggiuntiva per la richiesta e la risposta scambiata tra il client e il server.
Dal lato client queste informazioni di autenticazione aggiuntive, cioè nome utente e password, possono essere inviate nelle intestazioni, che successivamente verranno convalidate dal lato server. La risposta verrà consegnata dal lato server solo quando l'autenticazione sarà valida.
La libreria Requests ha l'autenticazione più comunemente usata in requests.auth, che sono l'autenticazione di base ( HTTPBasicAuth ) e l'autenticazione del digest ( HTTPDigestAuth ).
Autenticazione di base
Questa è la forma più semplice per fornire l'autenticazione al server. Per lavorare con l'autenticazione di base, utilizzeremo la classe HTTPBasicAuth disponibile con la libreria delle richieste.
Esempio
Ecco un esempio funzionante di come 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)
Stiamo chiamando l'URL, https://httpbin.org/basic-auth/admin/admin123con utente come admin e password come admin123 .
Quindi, questo URL non funzionerà senza autenticazione, ovvero utente e password. Dopo aver fornito l'autenticazione utilizzando il parametro auth, solo il server restituirà la risposta.
Produzione
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
Autenticazione digest
Questa è un'altra forma di autenticazione disponibile con le richieste. Utilizzeremo la classe HTTPDigestAuth dalle richieste.
Esempio
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)
Produzione
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
Autenticazione OAuth2
Per utilizzare l'autenticazione OAuth2, abbiamo bisogno della libreria "requests_oauth2". Per installare "requests_oauth2", procedi come segue:
pip install requests_oauth2
Il display nel tuo terminale durante l'installazione sarà qualcosa come mostrato di seguito -
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
Abbiamo finito di installare "richieste-oauth2". Per utilizzare le API di Google, Twitter abbiamo bisogno del suo consenso e lo stesso viene fatto utilizzando l'autenticazione OAuth2.
Per l'autenticazione OAuth2 avremo bisogno di un ID client e di una chiave segreta. I dettagli su come ottenerlo sono menzionatihttps://developers.google.com/identity/protocols/OAuth2.
Successivamente, accedi alla Console API di Google, disponibile all'indirizzo https://console.developers.google.com/e ottieni l'ID client e la chiave segreta.
Esempio
Ecco un esempio di come utilizzare "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)
Non saremo in grado di reindirizzare all'URL fornito, poiché è necessario accedere all'account Gmail, ma qui, vedrai dall'esempio, che google_auth funziona e viene fornito l'URL autorizzato.
Produzione
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