Làm cách nào để bạn gửi yêu cầu nhận với mã thông báo mang trong python?

Như bạn có thể nhận thấy, gần đây chúng tôi đã giới thiệu hai tùy chọn mới để xác thực. Giờ đây, bạn có thể sử dụng Khóa API hoặc OAuth 2. 0 Bearer Token để truy cập API Vị trí TẠI ĐÂY. Mặc dù việc sử dụng Khóa API rất đơn giản nhưng việc sử dụng OAuth có thể phức tạp hơn một chút. Tuy nhiên, nó tách rời xác thực khỏi ủy quyền, nghĩa là các ứng dụng có thể truy cập tài nguyên mà không để lộ thông tin đăng nhập của chúng. Trong bài đăng trên blog này, chúng ta sẽ tìm hiểu cách yêu cầu Mã thông báo mang OAuth TẠI ĐÂY bằng Python

Nếu chưa quen với cách hoạt động của OAuth, bạn có thể coi nó như một hệ thống thẻ khóa khách sạn. Nếu bạn có thẻ, bạn có thể sử dụng nó để vào phòng của mình. Làm thế nào để bạn có được nó? . Sau đó, khách sạn cung cấp cho bạn một thẻ chìa khóa để truy cập vào phòng của bạn. Tuy nhiên, bạn chỉ có thể sử dụng phòng của mình trong suốt thời gian lưu trú và quyền truy cập có thể bị thu hồi bất cứ lúc nào. Thẻ khóa khách sạn trong trường hợp của chúng tôi là mã thông báo, được tạo bằng OAuth. Mã thông báo này sẽ cho phép chúng tôi truy cập tất cả các API TẠI ĐÂY. Hãy lấy mã thông báo của chúng tôi sau đó.  

Tạo thông tin xác thực mã thông báo OAuth

Bước đầu tiên để có được mã thông báo là tạo thông tin đăng nhập OAuth từ nhà phát triển. nơi đây. com. Bạn có thể nhận được các bước hoàn chỉnh để tạo thông tin đăng nhập tại đây

'thông tin xác thực. tệp thuộc tính được tạo ở trên chứa hai giá trị quan tâm, ID khóa truy cập và Bí mật khóa truy cập. Chúng ta sẽ cần họ trong tương lai

Một 'thông tin xác thực. tập tin thuộc tính trông như thế này

Đã sao chép_______0

Tạo chữ ký Oauth

Để yêu cầu mã thông báo, chúng tôi cần chuyển chữ ký OAuth trong Tiêu đề ủy quyền của yêu cầu. Chữ ký đóng một vai trò quan trọng vì nó được sử dụng để xác thực người dùng hoặc ứng dụng. Nó yêu cầu chúng ta tạo một chuỗi cơ sở chứa các tham số khác nhau và sau đó chuyển nó vào thuật toán băm HMAC-SHA256

Tạo chuỗi tham số

Chúng tôi cần 6 cặp khóa-giá trị để tạo chữ ký

  • Grant_type - Giá trị luôn giữ nguyên, "client_credentials"
  • oauth_consumer_key - Giá trị ID khóa truy cập mà chúng tôi có được từ thông tin đăng nhập. tệp thuộc tính
  • oauth_nonce - Một chuỗi duy nhất không bao giờ lặp lại
  • oauth_signature_method - Luôn sử dụng "HMAC-SHA256"
  • oauth_timestamp - Số giây kể từ kỷ nguyên Unix, nói một cách đơn giản, thời gian hiện tại
  • oauth_version - Luôn sử dụng "1. 0"

Các giá trị của tham số trông như thế này

Đã sao chép____1

Điều quan trọng ở đây là kiểu của cả 6 tham số phải là chuỗi. Để tính nonce và dấu thời gian, chúng tôi đã sử dụng mô-đun thời gian của Python

Tiếp theo, chúng tôi kết hợp tất cả các tham số theo thứ tự bảng chữ cái thành một chuỗi, phân tách từng cặp giá trị khóa bằng ký tự dấu và ["&"] rồi mã hóa URL đó

Đã sao chép_______2

Chuỗi tham số là một đầu ra được nối đơn giản chứa cặp khóa-giá trị được phân tách bằng ký tự dấu và. Với sự trợ giúp của thư viện python urllib, chúng tôi đã nhận được đầu ra được mã hóa URL của mình trong encoded_parameter_string. Nó trông như thế này

tham số_chuỗi

Sao chép

        grant_type=client_credentials&oauth_consumer_key=XXXXXXXXXX&oauth_nonce=1585745318447&oauth_signature_method=HMAC-SHA256&oauth_timestamp=1585745318&oauth_version=1.0

  

mã hóa_parameter_string

Đã sao chép_______4

Tạo chuỗi cơ sở chữ ký

Tiếp theo, chúng ta cần thêm phương thức HTTP [POST], URL cơ sở và chuỗi tham số được mã hóa thành một chuỗi duy nhất gọi là chuỗi cơ sở

Sao chép_______5

Chuỗi cơ sở trông như thế này

Đã sao chép_______6

POST, URL và chuỗi tham số được mã hóa được phân tách bằng dấu và ["&"]

Tạo khóa ký

Khóa ký là bí mật khóa truy cập được mã hóa URL, theo sau là dấu và ["&"]. Bí mật khóa truy cập là giá trị của "tại đây. truy cập. Chìa khóa. secret" trong thông tin đăng nhập. tệp thuộc tính

Sao chép______7

Kết hợp tất cả để tạo Chữ ký OAuth

Chuỗi cơ sở chữ ký và khóa ký được tạo ở trên, được chuyển đến Thuật toán băm HMAC-SHA256 và đầu ra được chuyển đổi thành chuỗi base64. Cuối cùng, chúng ta có Chữ ký OAuth

Đã sao chép____8

Phương thức create_signature lấy khóa bí mật và chuỗi cơ sở làm đầu vào, thực hiện băm, chuyển đổi đầu ra thành chuỗi base64. Sau đó, chúng tôi mã hóa URL đầu ra để sử dụng thêm

Yêu cầu mã thông báo

Sau khi chúng tôi có chữ ký của mình, phần còn lại của quy trình sẽ được thực hiện ngay. Tất cả những gì chúng tôi yêu cầu bây giờ là tạo tiêu đề Ủy quyền cho yêu cầu và sau đó thực hiện yêu cầu

Đối với điều này, đầu tiên chúng ta sẽ kết hợp -

  • oauth_consumer_key - Giá trị của "tại đây. truy cập. Chìa khóa. id" từ thông tin đăng nhập. tệp thuộc tính
  • oauth_nonce - Đã có
  • oauth_signature - Giá trị của encoded_oauth_signature từ phía trên
  • oauth_signature_method - "HMAC-SHA256"
  • oauth_timestamp - Đã có
  • oauth_version - "1. 0"

và nối chúng vào một chuỗi bắt đầu bằng “OAuth”.  

Đã sao chép____9

Nội dung yêu cầu phải luôn chứa giá trị Grant_type là 'client_credentials'

Đầu ra của mã trông như thế này-

Đã sao chép____10

Mã hoàn chỉnh

Rất nhiều thư viện cần được nhập mà không được đề cập trong các bước trên. Vì vậy, hãy xem mã hoàn chỉnh trông như thế nào

Đã sao chép____11

Sự kết luận

Giá trị của mã thông báo truy cập là mã thông báo thực tế của chúng tôi và nó có giá trị trong 24 giờ. Bạn có thể sử dụng mã thông báo để thực hiện tất cả lệnh gọi API HERE. Mặc dù bạn có thể tiếp tục sử dụng Khóa API nếu muốn, nhưng nếu bạn muốn sử dụng môi trường sản xuất, OAuth là cách phù hợp.   

Tôi có thể chuyển Mã thông báo Bearer trong URL không?

Không chuyển mã thông báo mang trong URL trang. Mã thông báo mang KHÔNG NÊN được chuyển vào URL trang [ví dụ: dưới dạng tham số chuỗi truy vấn]. Thay vào đó, mã thông báo mang NÊN được chuyển trong tiêu đề thư HTTP hoặc nội dung thư được thực hiện các biện pháp bảo mật.

Chúng tôi có thể gửi yêu cầu nội dung mã thông báo không?

Tuy nhiên, không có gì sai khi gửi mã thông báo truy cập trong nội dung yêu cầu . Trong RFC 6750, OAuth 2. 0 xác định tất cả các cách sử dụng mã thông báo mang có thể có, bao gồm cả việc gửi mã thông báo dưới dạng Tham số cơ thể được mã hóa biểu mẫu. Đảm bảo đọc kỹ và xem xét các cân nhắc về bảo mật.

Chủ Đề