คำขอ - การรับรองความถูกต้อง
บทนี้จะกล่าวถึงประเภทของการพิสูจน์ตัวตนที่มีอยู่ในโมดูลคำขอ
เราจะพูดถึงสิ่งต่อไปนี้ -
- การทำงานของการพิสูจน์ตัวตนในคำขอ HTTP
- การรับรองความถูกต้องขั้นพื้นฐาน
- การรับรองความถูกต้องของไดเจสต์
- การตรวจสอบสิทธิ์ OAuth2
การทำงานของการพิสูจน์ตัวตนในคำขอ HTTP
การตรวจสอบสิทธิ์ HTTP อยู่ที่ฝั่งเซิร์ฟเวอร์เพื่อขอข้อมูลการตรวจสอบสิทธิ์บางอย่างเช่นชื่อผู้ใช้รหัสผ่านเมื่อไคลเอ็นต์ร้องขอ URL นี่คือการรักษาความปลอดภัยเพิ่มเติมสำหรับคำขอและการตอบสนองที่แลกเปลี่ยนระหว่างไคลเอนต์และเซิร์ฟเวอร์
จากฝั่งไคลเอ็นต์ข้อมูลการตรวจสอบความถูกต้องเพิ่มเติมเหล่านี้เช่นชื่อผู้ใช้และรหัสผ่านสามารถส่งไปที่ส่วนหัวซึ่งในภายหลังทางฝั่งเซิร์ฟเวอร์จะได้รับการตรวจสอบ การตอบกลับจะถูกส่งจากฝั่งเซิร์ฟเวอร์ก็ต่อเมื่อการพิสูจน์ตัวตนถูกต้อง
ไลบรารีคำขอมีการพิสูจน์ตัวตนที่ใช้บ่อยที่สุดในrequest.authซึ่ง ได้แก่ การพิสูจน์ตัวตนพื้นฐาน ( HTTPBasicAuth ) และการพิสูจน์ตัวตนแบบแยกย่อย ( HTTPDigestAuth )
การรับรองความถูกต้องขั้นพื้นฐาน
นี่เป็นรูปแบบที่ง่ายที่สุดในการตรวจสอบสิทธิ์เซิร์ฟเวอร์ ในการทำงานกับการพิสูจน์ตัวตนขั้นพื้นฐานเราจะใช้คลาส HTTPBasicAuth ที่มีอยู่ในไลบรารีคำขอ
ตัวอย่าง
นี่คือตัวอย่างการใช้งานของวิธีการใช้งาน
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)
เรากำลังเรียก url https://httpbin.org/basic-auth/admin/admin123ที่มีผู้ใช้เป็นผู้ดูแลระบบและรหัสผ่านเป็นadmin123
ดังนั้น URL นี้จะไม่ทำงานหากไม่มีการตรวจสอบความถูกต้องนั่นคือผู้ใช้และรหัสผ่าน เมื่อคุณให้การรับรองความถูกต้องโดยใช้พารามิเตอร์รับรองความถูกต้องแล้วมีเพียงเซิร์ฟเวอร์เท่านั้นที่จะตอบกลับ
เอาต์พุต
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
การรับรองความถูกต้องของไดเจสต์
นี่คือรูปแบบการตรวจสอบสิทธิ์อีกรูปแบบหนึ่งที่สามารถใช้ได้กับคำขอ เราจะใช้ประโยชน์จากคลาส HTTPDigestAuth จากคำขอ
ตัวอย่าง
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)
เอาต์พุต
E:\prequests>python makeRequest.py
{
"authenticated": true,
"user": "admin"
}
การตรวจสอบสิทธิ์ OAuth2
ในการใช้การตรวจสอบสิทธิ์ OAuth2 เราจำเป็นต้องมีไลบรารี“ request_oauth2” ในการติดตั้ง“ request_oauth2” ให้ทำดังต่อไปนี้ -
pip install requests_oauth2
การแสดงผลในเทอร์มินัลของคุณขณะติดตั้งจะเป็นอย่างที่แสดงด้านล่าง -
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
เราติดตั้ง“ request-oauth2” เสร็จเรียบร้อยแล้ว ในการใช้ API ของ Google Twitter เราต้องได้รับความยินยอมและทำได้เช่นเดียวกันโดยใช้การตรวจสอบสิทธิ์ OAuth2
สำหรับการตรวจสอบสิทธิ์ OAuth2 เราจะต้องมีรหัสไคลเอ็นต์และรหัสลับ รายละเอียดวิธีการรับมีการกล่าวถึงhttps://developers.google.com/identity/protocols/OAuth2.
หลังจากนั้นให้เข้าสู่ระบบคอนโซล Google API ซึ่งมีให้ที่ https://console.developers.google.com/และรับรหัสลูกค้าและรหัสลับ
ตัวอย่าง
นี่คือตัวอย่างวิธีการใช้ "request-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)
เราจะไม่สามารถเปลี่ยนเส้นทางไปยัง URL ที่ระบุได้เนื่องจากจำเป็นต้องลงชื่อเข้าใช้บัญชี Gmail แต่ที่นี่คุณจะเห็นจากตัวอย่างว่า google_auth ทำงานได้และได้รับ URL ที่ได้รับอนุญาต
เอาต์พุต
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