Python - uwierzytelnianie HTTP
Uwierzytelnianie to proces określania, czy żądanie pochodzi od prawidłowego użytkownika, który ma wymagane uprawnienia do korzystania z systemu. W świecie sieci komputerowych jest to bardzo istotne wymaganie, ponieważ wiele systemów współdziała ze sobą, a odpowiedni mechanizm musi zapewnić, że między tymi programami zachodzą tylko prawidłowe interakcje.
Nazwy modułów Pythona requestsma wbudowaną funkcję wywoływania różnych interfejsów API udostępnianych przez obsługujące aplikacje internetowe wraz z poświadczeniami użytkownika. Te poświadczenia muszą być osadzone w programie wywołującym. Jeśli interfejsy API pomyślnie to zweryfikują, nastąpi prawidłowe logowanie.
Instalowanie żądań
Instalujemy wymagany moduł Pythona o nazwie request do uruchomienia programu uwierzytelniającego.
pip install requests
Uwierzytelnianie na Githubie
Poniżej widzimy prosty mechanizm uwierzytelniania obejmujący tylko nazwę użytkownika i hasło. Pomyślna odpowiedź oznacza prawidłowe logowanie.
import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print r
Po uruchomieniu powyższego programu otrzymujemy następujący wynik -
Uwierzytelnianie na Twitterze
Możemy również uruchomić program korzystający z interfejsu API Twittera i dokonać pomyślnego logowania za pomocą następującego kodu. Do przetwarzania parametrów wymaganych przez Twitter API wykorzystujemy metodę OAuth1 dostępną w module request. Jak widać, moduł request jest w stanie obsłużyć bardziej złożony mechanizm uwierzytelniania obejmujący klucze i tokeny, a nie tylko mechanizm nazwy użytkownika i hasł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)
Po uruchomieniu powyższego programu otrzymujemy następujący wynik -
{
"errors": [
{
"code": 215,
"message": "Bad Authentication data."
}
]
}
Ale używając odpowiednich wartości parametrów OAuth1, otrzymasz pomyślną odpowiedź.