Solicitações - autenticação
Este capítulo discutirá os tipos de autenticação disponíveis no módulo Solicitações.
Vamos discutir o seguinte -
- Trabalho de autenticação em solicitações HTTP
- Autenticação Básica
- Autenticação Digest
- Autenticação OAuth2
Trabalho de autenticação em solicitações HTTP
A autenticação HTTP está no lado do servidor solicitando algumas informações de autenticação, como nome de usuário e senha, quando o cliente solicita um URL. Esta é uma segurança adicional para o pedido e a resposta que está sendo trocada entre o cliente e o servidor.
Do lado do cliente, essas informações de autenticação adicionais, ou seja, nome de usuário e senha, podem ser enviadas nos cabeçalhos, que posteriormente serão validados no lado do servidor. A resposta será entregue do lado do servidor apenas quando a autenticação for válida.
A biblioteca Requests tem mais comumente usado autenticação em requests.auth, que são Basic Authentication ( HTTPBasicAuth ) e Digest Authentication ( HTTPDigestAuth ).
Autenticação Básica
Esta é a forma mais simples de fornecer autenticação ao servidor. Para trabalhar com autenticação básica, vamos usar a classe HTTPBasicAuth disponível com a biblioteca de solicitações.
Exemplo
Aqui está um exemplo prático de como usá-lo.
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 ligando para o url, https://httpbin.org/basic-auth/admin/admin123com usuário como admin e senha como admin123 .
Portanto, este URL não funcionará sem autenticação, ou seja, usuário e senha. Depois de fornecer a autenticação usando o parâmetro auth, apenas o servidor retornará a resposta.
Resultado
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
Autenticação Digest
Esta é outra forma de autenticação disponível com solicitações. Vamos usar a classe HTTPDigestAuth a partir de solicitações.
Exemplo
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)
Resultado
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
Autenticação OAuth2
Para usar a autenticação OAuth2, precisamos da biblioteca “requests_oauth2”. Para instalar “requests_oauth2” faça o seguinte -
pip install requests_oauth2
A tela em seu terminal durante a instalação será algo como mostrado abaixo -
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
Concluímos a instalação do “requests-oauth2”. Para utilizar as API's do Google, Twitter é necessário o seu consentimento e o mesmo é feito utilizando a autenticação OAuth2.
Para autenticação OAuth2, precisaremos do ID do cliente e de uma chave secreta. Os detalhes de como obtê-lo são mencionados emhttps://developers.google.com/identity/protocols/OAuth2.
Mais tarde, faça login no Console de API do Google, que está disponível em https://console.developers.google.com/e obtenha o ID do cliente e a chave secreta.
Exemplo
Aqui está um exemplo de como usar "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)
Não poderemos redirecionar para o URL fornecido, pois é necessário fazer o login na conta do Gmail, mas aqui, você verá pelo exemplo que google_auth funciona e o URL autorizado é fornecido.
Resultado
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