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?

Giao thức truyền siêu văn bản là một giao thức truyền dữ liệu được sử dụng rộng rãi để truyền dữ liệu giữa các máy khách HTTP (trình duyệt và ứng dụng di động) và máy chủ. HTTP dựa trên công nghệ "máy khách-máy chủ". Máy khách đưa ra yêu cầu và bắt đầu kết nối, máy chủ nhận yêu cầu rồi thực hiện và gửi kết quả cho máy khách. HTTP xác định các phương thức yêu cầu khác nhau cho biết hành động mong muốn (thêm, cập nhật, xóa) cho một tài nguyên nhất định. Mỗi phương thức yêu cầu thực hiện ngữ nghĩa của nó và thực hiện một hành động cụ thể

Xác thực HTTP là gì?

Xác thực HTTP là một phương thức phản hồi và yêu cầu đơn giản mà máy chủ có thể yêu cầu thông tin xác thực từ máy khách và cung cấp một khuôn khổ để kiểm soát quyền truy cập vào tài nguyên. Xác thực là hệ quả của việc xác định xem khách hàng có quyền truy cập tài nguyên hay không. HTTP hỗ trợ xác thực như một phương tiện đàm phán quyền truy cập vào tài nguyên được bảo vệ

Xác thực cơ bản là gì?

Xác thực cơ bản là một phương thức xác thực đơn giản được tích hợp trong giao thức HTTP. Xác thực cơ bản gửi chuỗi được mã hóa base64 với tên người dùng và mật khẩu trong tiêu đề Ủy quyền. Xác thực cơ bản chỉ nên sử dụng cùng với các cơ chế bảo mật khác như HTTPS/SSL vì lý do bảo mật. Để gửi thông tin xác thực cơ bản đến máy chủ, bạn cần chuyển đổi "tên người dùng. password" thành chuỗi được mã hóa Base64 và chuyển nó vào tiêu đề yêu cầu ủy quyền

Cú pháp xác thực cơ bản

Sau đây là cú pháp phổ biến cho tiêu đề Xác thực cơ bản

Cú pháp tiêu đề xác thực cơ bản

Authorization: Basic {base64 encoded string}


Ở đâu
  • ủy quyền. tiêu đề ủy quyền HTTP tiêu chuẩn
  • Căn bản. cho biết loại Ủy quyền HTTP

JSON là gì?

JSON (Ký hiệu đối tượng JavaScript) là định dạng dựa trên văn bản để lưu trữ có cấu trúc và trao đổi dữ liệu ở định dạng con người có thể đọc được. JSON được sử dụng trong hầu hết các ngôn ngữ kịch bản. JSON đến từ JavaScript và có cú pháp tương tự như JavaScript nhưng có thể được sử dụng riêng biệt với nó. JSON cho phép truyền thông tin qua mạng. Sau khi nhận dữ liệu ở định dạng JSON, máy khách sẽ chuyển đổi dữ liệu thành các đối tượng theo ngôn ngữ lập trình đã cho. Ví dụ: đối với JavaScript, việc chuyển đổi được thực hiện bằng cách gọi JSON. phương pháp phân tích cú pháp (dữ liệu). Bản thân JSON không có phương thức, chỉ có thuộc tính. Việc chuyển đổi từ dữ liệu JSON sang đối tượng được thực hiện bằng cách gọi các phương thức của ngôn ngữ lập trình; . Có các định dạng khác cho cùng một mục đích, chẳng hạn như XML và YAML

Ví dụ JSON

{
  "Id": 78912,
  "Customer": "Jason Sweet",
  "Quantity": 1,
  "Price": 18.00
}


Yêu cầu POST là gì?

HTTP POST là một trong những phương thức HTTP được sử dụng phổ biến nhất. Yêu cầu POST có thể chứa hoặc không chứa dữ liệu. Các yêu cầu POST thường được sử dụng khi gửi biểu mẫu web hoặc khi tải tệp lên máy chủ. Dữ liệu POST được bao gồm trong phần thân của thông báo POST. Tiêu đề Loại nội dung cho biết loại nội dung yêu cầu POST và độ dài được chỉ định trong tiêu đề Độ dài nội dung

Ví dụ về yêu cầu POST xác thực cơ bản

POST /echo/post/json HTTP/1.1
Authorization: Basic e3VzZXJuYW1lfTp7cGFzc3dvcmR9
Host: reqbin.com
Accept: application/json
Content-Type: application/json
Content-Length: 61


Xem thêm

  • Làm cách nào để đăng JSON lên điểm cuối API REST?

    Làm việc với các API REST của Nutanix sẽ yêu cầu xác thực. Lý do cho điều này rất đơn giản và chính xác như bạn mong đợi. Thông tin và hành động do API hiển thị sẽ chứa và cấp quyền truy cập vào những thứ bạn không muốn rơi vào tay kẻ xấu

    Phải thừa nhận rằng đó là một điều khá rõ ràng để nói, phải không? . Cho dù chúng là GET, POST hay bất kỳ thứ gì khác, xác thực sẽ luôn được xem xét

    API REST xác thực & Nutanix

    Đối với bài viết này, chúng tôi sẽ tập trung vào Xác thực cơ bản HTTP. Tài liệu API Prism v3 liệt kê Xác thực cơ bản HTTP là một trong những phương pháp được hỗ trợ. Với ý nghĩ đó, đây là một phần quan trọng của bài viết Wikipedia được liên kết ở trên

    Trong ngữ cảnh của một giao dịch HTTP, xác thực quyền truy cập cơ bản là một phương thức dành cho tác nhân người dùng HTTP (e. g. trình duyệt web) để cung cấp tên người dùng và mật khẩu khi đưa ra yêu cầu. Trong xác thực HTTP cơ bản, một yêu cầu chứa trường tiêu đề ở dạng Authorization: Basic , trong đó thông tin xác thực là mã hóa base64 của id và mật khẩu được nối với nhau bằng một dấu hai chấm :

    https. // vi. wikipedia. org/wiki/Basic_access_authentication

    Hãy xem điều đó có nghĩa là gì

    Tiêu đề ủy quyền

    Những người quen thuộc với các yêu cầu API được thực hiện bằng giao thức HTTP sẽ biết rằng hầu hết các yêu cầu, đặc biệt là các yêu cầu được thực hiện cho API REST của Nutanix, đều được thực hiện với tiêu đề HTTP đi kèm. Một lời giải thích cực kỳ đơn giản là nói rằng các tiêu đề HTTP xác định các tham số vận hành cho một giao dịch HTTP (nguồn. Danh sách các trường tiêu đề HTTP)

    Xuyên suốt các bài viết trên Cổng thông tin dành cho nhà phát triển Nutanix, bạn sẽ thấy một số tiêu đề được sử dụng hầu như mọi lúc

    • Loại nội dung. Đối với các yêu cầu API REST của Nutanix, bạn sẽ thấy phần này được đặt thành application/json. Ví dụ: điều này cho khách hàng của chúng tôi biết mong đợi phản hồi ở định dạng JSON
    • ủy quyền. Một cặp khóa/giá trị bao gồm tên người dùng và mật khẩu được mã hóa base64 được sử dụng để xác thực các yêu cầu

    Hiển thị bên dưới là một ví dụ về tiêu đề Ủy quyền cặp khóa/giá trị

    Authorization: Basic YWRtaW46bnV0YW5peC80dQ==

    Khi nào tạo tiêu đề Ủy quyền

    Không phải lúc nào bạn cũng cần tạo tiêu đề Ủy quyền HTTP theo cách thủ công. Ví dụ: công cụ dòng lệnh cURL cung cấp tham số -u (hoặc –user). Điều này có thể được sử dụng để chỉ định trực tiếp tên người dùng và mật khẩu và sẽ hoạt động mà không gặp sự cố

    Điều tương tự cũng có thể xảy ra khi chuyển tên người dùng và mật khẩu bằng nhiều tập lệnh và ngôn ngữ. Một ví dụ khác là thư viện Python Requests. Thư viện này cho phép bạn chỉ định tên người dùng và mật khẩu trực tiếp, như hình bên dưới

    >>> from requests.auth import HTTPBasicAuth
    >>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))

    Tuy nhiên, nếu bạn đang ở trong tình huống cần tạo tiêu đề Ủy quyền bằng mã, thì các bước sẽ khác nhau tùy thuộc vào ngôn ngữ được sử dụng

    Trước khi tạo tiêu đề Ủy quyền của riêng chúng tôi…

    Đối với bài viết này, chúng tôi sẽ bỏ qua mọi thứ trừ tiêu đề Ủy quyền. Chúng tôi cũng sẽ giả định như sau

    • Tên người dùng Prism Central sẽ là quản trị viên
    • Mật khẩu sẽ là nutanix/4u
    • Địa chỉ IP của Prism Central sẽ là 192. 168. 1. 131 – đây là địa chỉ IP của phiên bản Nutanix Community Edition Prism Central của tôi. Nhân tiện, nếu bạn chưa tải xuống Phiên bản cộng đồng Nutanix, bạn nên. Nó miễn phí. 🙂

    Nhiều tập lệnh và ngôn ngữ, bao gồm nhiều tập lệnh và ngôn ngữ khác không được đề cập ở trên, sẽ cung cấp các cách để lấy kết hợp tên người dùng và mật khẩu và tạo tiêu đề được mã hóa base64 (chúng ta sẽ xem xét một vài cách ngay sau đây). Đây là một ví dụ từ hệ thống Linux có sẵn lệnh base64

    echo -n admin:nutanix/4u | base64

    Và đây là kết quả khi chạy lệnh trên

    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?
    Sử dụng lệnh “echo” và “base64” trong Ubuntu Linux 19. 04 để tạo tiêu đề Ủy quyền HTTP được mã hóa base64

    Thậm chí có những công cụ trực tuyến cho phép bạn nhập tên người dùng và mật khẩu của mình và tạo tiêu đề Ủy quyền trong một bước

    Có những cân nhắc bảo mật rất rõ ràng cần tính đến trước khi sử dụng bất kỳ dịch vụ công cộng nào với thông tin đăng nhập của bạn. Vui lòng suy nghĩ về những điều này trước khi sử dụng các dịch vụ công cộng hoặc trực tuyến với bất kỳ điều gì liên quan đến bảo mật, đặc biệt là tên người dùng và mật khẩu cũng như thông tin bí mật và/hoặc độc quyền

    Kịch bản cơ bản hôm nay

    Phải mất một thời gian để đi đến điểm này, nhưng trong bài viết hôm nay, chúng tôi có yêu cầu tạo tiêu đề Ủy quyền HTTP trong mã. Chúng tôi cũng có một yêu cầu nói rằng chúng tôi phải có thể thực hiện việc này bằng các ngôn ngữ/chữ viết sau

    • Trăn 3. 7
    • Microsoft C#
    • PowerShell

    Rất may, mỗi tập lệnh và ngôn ngữ phổ biến này đều cung cấp các phương thức gốc/tích hợp sẵn để thực hiện chính xác những gì chúng ta cần. Tôi đã đề cập đến một số điều này trước đây, nhưng để đảm bảo, đây là các cài đặt chúng tôi sẽ làm việc với ngày hôm nay

    • Tên người dùng Prism Central sẽ là quản trị viên
    • Mật khẩu sẽ là nutanix/4u
    • Địa chỉ IP của cụm sẽ là 192. 168. 1. 131 – địa chỉ IP của phiên bản Nutanix Community Edition Prism Central của tôi
    • Sử dụng thông tin đăng nhập ở trên, chúng tôi muốn tạo tiêu đề Ủy quyền cơ bản HTTP trong mã có thể được sử dụng trong các tập lệnh và ứng dụng của chúng tôi

    Tạo tiêu đề ủy quyền

    Cuối cùng, chúng tôi đã đạt đến điểm mà chúng tôi có thể xem mã cần thiết để tạo tiêu đề. Mỗi mẫu mã bên dưới hoàn toàn độc lập, mặc dù sẽ không làm được gì hữu ích cho đến khi được tích hợp vào một ứng dụng tạo yêu cầu API

    Trăn 3. 7

    #!/usr/bin/env python3.7
    import urllib3
    import requests
    from base64 import b64encode
    username = 'admin'
    password = 'password'
    encoded_credentials = b64encode(bytes(f'{username}:{password}',
                                    encoding='ascii')).decode('ascii')
    auth_header = f'Basic {encoded_credentials}'
    # the auth_header above can now be used in our API request
    # we'll look at that shortly
    
    # just for testing, let's print the auth_header variable (this step will be removed later)
    print(f'Auth header: {auth_header}')

    Chạy tập lệnh nhỏ đó sẽ tạo ra kết quả sau

    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?
    Tạo tiêu đề Ủy quyền HTTP bằng Python 3. 7

    Microsoft C#

    Xin lưu ý rằng ví dụ C# nhằm chạy dưới dạng ứng dụng bảng điều khiển và có thể được tạo bằng Microsoft Visual Studio (ví dụ)

    using System;
    using System.Net;
    using System.Text;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string ClusterUsername = "admin";
                string ClusterPassword = "nutanix/4u";
                string AuthHeader = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(ClusterUsername + ":" + ClusterPassword));
                // the AuthHeader variable above can now be used in our API request
                // we'll look at that shortly
                // just for testing, let's print the AuthHeader variable 
                // this step will be removed later
                Console.WriteLine("Auth header: " + AuthHeader);
                Console.ReadLine();
            }
        }
    }

    Chạy ứng dụng từ Visual Studio Community 2019 tạo ra kết quả sau

    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?
    Tạo tiêu đề Ủy quyền HTTP bằng C#

    Windows PowerShell

    ________số 8_______

    Chạy ứng dụng từ Windows PowerShell ISE trong Windows 10 tạo ra kết quả sau

    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?
    Tạo tiêu đề Ủy quyền HTTP bằng Windows PowerShell

    Trong mỗi ví dụ trong số ba ví dụ của chúng tôi ở trên, bạn sẽ thấy chuỗi tiêu đề Ủy quyền cơ bản HTTP

    Chúng ta có thể sử dụng cái này ở đâu cho thật?

    Do số cách sử dụng mã này là không giới hạn nên bài viết này sẽ không bao gồm các ứng dụng hoặc tập lệnh được nhúng để thực hiện các yêu cầu API

    Thay vào đó, tôi khuyến khích tất cả độc giả xem trang mẫu mã Cổng thông tin dành cho nhà phát triển Nutanix của chúng tôi. Dưới đây là các liên kết đến các mẫu mã sử dụng trực tiếp phương pháp Ủy quyền cơ bản HTTP ở trên

    • Trăn 3. 7 – Tạo VM cơ bản bằng Nutanix REST API v3
    • C# – Liệt kê 20 máy ảo đầu tiên được quản lý bởi một phiên bản Prism Central cụ thể
    • PowerShell – Tạo VM cơ bản bằng Nutanix REST API v3

    kết thúc

    Hy vọng rằng bài viết chi tiết hơn một chút này đã chỉ ra cách bạn có thể sử dụng Python 3. 7, C# hoặc PowerShell để tạo tiêu đề Ủy quyền HTTP cơ bản. Thông tin này sẽ hữu ích khi viết các tập lệnh và ứng dụng thực hiện các yêu cầu API REST của Nutanix

    Làm cách nào để đặt xác thực cơ bản trong tiêu đề HTTP 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 để sử dụng Ủy quyền trong yêu cầu Python?

    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 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 để thêm tiêu đề Ủy quyền cơ bản vào yêu cầu HTTP trong Postman?

    Xác thực cơ bản liên quan đến việc gửi tên người dùng và mật khẩu đã xác minh cùng với yêu cầu của bạn. Trong tab Ủy quyền yêu cầu, chọn Xác thực cơ bản từ danh sách thả xuống Loại. Nhập tên người dùng và mật khẩu API của bạn vào trường Tên người dùng và Mật khẩu . Để bảo mật hơn, hãy lưu trữ chúng trong các biến.

    Tiêu đề ủy quyền cơ bản là gì?

    Tiêu đề yêu cầu Ủy quyền HTTP có thể được sử dụng để cung cấp thông tin đăng nhập xác thực tác nhân người dùng với máy chủ, cho phép truy cập vào tài nguyên được bảo vệ . Tiêu đề ủy quyền thường, nhưng không phải lúc nào cũng được gửi sau khi tác nhân người dùng lần đầu tiên cố gắng yêu cầu tài nguyên được bảo vệ mà không có thông tin xác thực.