Làm cách nào để gửi tiêu đề ủy quyền trong yêu cầu POST Python?

Nhiều dịch vụ web yêu cầu xác thực và có nhiều loại khác nhau. Dưới đây, chúng tôi phác thảo các hình thức xác thực khác nhau có sẵn trong Yêu cầu, từ đơn giản đến phức tạp

Xác thực cơ bản

Nhiều dịch vụ web yêu cầu xác thực chấp nhận HTTP Basic Auth. Đây là loại đơn giản nhất và Yêu cầu hỗ trợ nó ngay lập tức

Yêu cầu với HTTP Basic Auth rất đơn giản

>>> from requests.auth import HTTPBasicAuth
>>> basic = HTTPBasicAuth['user', 'pass']
>>> requests.get['//httpbin.org/basic-auth/user/pass', auth=basic]

Trên thực tế, Xác thực cơ bản HTTP phổ biến đến mức Yêu cầu cung cấp một cách viết tắt tiện dụng để sử dụng nó

>>> requests.get['//httpbin.org/basic-auth/user/pass', auth=['user', 'pass']]

Cung cấp thông tin đăng nhập trong một bộ dữ liệu như thế này hoàn toàn giống với ví dụ về HTTPBasicAuth ở trên

xác thực netrc

Nếu không có phương thức xác thực nào được đưa ra với đối số auth, Yêu cầu sẽ cố lấy thông tin đăng nhập xác thực cho tên máy chủ của URL từ tệp netrc của người dùng. Tệp netrc ghi đè các tiêu đề xác thực HTTP thô được đặt bằng headers=

Nếu thông tin đăng nhập cho tên máy chủ được tìm thấy, yêu cầu sẽ được gửi với HTTP Basic Auth

Xác thực thông báo

Một hình thức Xác thực HTTP rất phổ biến khác là Xác thực thông báo và Yêu cầu cũng hỗ trợ điều này ngay lập tức

>>> from requests.auth import HTTPDigestAuth
>>> url = '//httpbin.org/digest-auth/auth/user/pass'
>>> requests.get[url, auth=HTTPDigestAuth['user', 'pass']]

Xác thực OAuth 1

Một hình thức xác thực phổ biến cho một số API web là OAuth. Thư viện requests-oauthlib cho phép người dùng Yêu cầu dễ dàng thực hiện các yêu cầu được xác thực OAuth 1

>>> import requests
>>> from requests_oauthlib import OAuth1

>>> url = '//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]

Để biết thêm thông tin về cách hoạt động của luồng OAuth, vui lòng xem trang web chính thức của OAuth. Để biết các ví dụ và tài liệu về request-oauthlib, vui lòng xem kho lưu trữ request_oauthlib trên GitHub

Xác thực kết nối OAuth 2 và OpenID

Thư viện requests-oauthlib cũng xử lý OAuth 2, cơ chế xác thực làm nền tảng cho OpenID Connect. Xem tài liệu về yêu cầu-oauthlib OAuth2 để biết chi tiết về các luồng quản lý thông tin xác thực OAuth 2 khác nhau

Xác thực khác

Yêu cầu được thiết kế để cho phép các hình thức xác thực khác được cắm dễ dàng và nhanh chóng. Các thành viên của cộng đồng nguồn mở thường xuyên viết các trình xử lý xác thực cho các hình thức xác thực phức tạp hơn hoặc ít được sử dụng hơn. Một số thứ tốt nhất đã được tập hợp lại dưới tổ chức Yêu cầu, bao gồm

  • Kerberos

  • NTLM

Nếu bạn muốn sử dụng bất kỳ hình thức xác thực nào trong số này, hãy truy cập thẳng vào trang GitHub của họ và làm theo hướng dẫn

Các hình thức xác thực mới

Nếu bạn không thể tìm thấy cách triển khai tốt hình thức xác thực mà mình muốn, bạn có thể tự triển khai hình thức đó. Yêu cầu giúp dễ dàng thêm các hình thức xác thực của riêng bạn

Để làm như vậy, hãy phân lớp và triển khai phương thức

>>> requests.get['//httpbin.org/basic-auth/user/pass', auth=['user', 'pass']]

0

>>> import requests
>>> class MyAuth[requests.auth.AuthBase]:
..     def __call__[self, r]:
..         # Implement my authentication
..         return r
...
>>> url = '//httpbin.org/get'
>>> requests.get[url, auth=MyAuth[]]

Khi một trình xử lý xác thực được đính kèm với một yêu cầu, nó sẽ được gọi trong quá trình thiết lập yêu cầu. Do đó, phương thức

>>> requests.get['//httpbin.org/basic-auth/user/pass', auth=['user', 'pass']]

1 phải làm bất cứ điều gì được yêu cầu để xác thực hoạt động. Một số hình thức xác thực sẽ bổ sung thêm móc để cung cấp thêm chức năng

Làm cách nào để thêm tiêu đề ủy quyền cơ bản vào yêu cầu HTTP trong Python?

url = "https. // người đưa thư-echo. com/basic-auth"
tên người dùng = "người đưa thư"
mật khẩu = "mật khẩu"
phản ứng = yêu cầu. get[url, auth=[tên người dùng, mật khẩu]]
in [phản hồi. status_code]
in [phản hồi. json[]]

Làm cách nào để lấy tiêu đề Ủy quyền trong Python?

Để gửi yêu cầu GET với tiêu đề ủy quyền Mã thông báo mang bằng Python, bạn cần phải thực hiện yêu cầu HTTP GET và cung cấp Mã thông báo gửi của bạn với Ủy quyền. Tiêu đề HTTP {token} của người mang .

Làm cách nào để gửi xác thực cơ bản trong yêu cầu Python tiêu đề?

Sử dụng Xác thực Cơ bản với Yêu cầu Python
Sử dụng Mã thông báo ủy quyền cơ bản làm thông tin xác thực với các yêu cầu Python
Sử dụng xác thực thông báo với các yêu cầu Python
Sử dụng Xác thực OAuth1 với Yêu cầu Python
Sử dụng Xác thực kết nối OAuth2 và OpenID với các yêu cầu Python

Làm cách nào để gửi mã thông báo trong yêu cầu POST Python?

Để đăng JSON với tiêu đề Ủy quyền mã thông báo người mang, bạn cần phải thực hiện yêu cầu HTTP POST, cung cấp cho Mã thông báo người gửi của bạn một "Ủy quyền. Bearer {token}" tiêu đề HTTP và cung cấp dữ liệu JSON trong phần nội dung của thông báo POST .

Chủ Đề