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ź.