53.3. Xác 롤 토토c SASL#

SASLlà một khung để xác 롤 토토c trong các giao thức định hướng kết nối. Ngay bây giờ,PostgreSQLThực hiện hai cơ chế xác thực SASL, Scram-Sha-256 và Scram-Sha-256-Plus. Nhiều hơn có thể được thêm vào trong tương lai. Các bước dưới đây minh họa cách xác thực SASL được thực hiện nói chung, trong khi tiểu mục tiếp theo cung cấp thêm chi tiết về Scram-Sha-256 và Scram-Sha-256-Plus.

Lưu lượng thông báo xác thực SASL

  1. Để bắt đầu trao đổi xác thực SASL, máy chủ sẽ gửi một thông báo xác thực. Nó bao gồm một danh sách các cơ chế xác thực SASL mà máy chủ có thể chấp nhận, theo thứ tự ưa thích của máy chủ.

  2. Máy khách chọn một trong các cơ chế được hỗ trợ từ danh sách và gửi thông báo SaslinitialResponse đến máy chủ. Thông báo bao gồm tên của cơ chế đã chọn và phản hồi máy khách ban đầu tùy chọn, nếu cơ chế được chọn sử dụng đó.

  3. Một hoặc nhiều tin nhắn phản ứng máy chủ và phản hồi của máy khách sẽ theo sau. Mỗi thử thách máy chủ được gửi trong một thông báo xác thựcaSlContinue, sau đó là phản hồi từ máy khách trong một thông báo SASLResponse. Các chi tiết của các thông điệp là cụ thể về cơ chế.

  4. Cuối cùng, khi trao đổi xác 롤 토토c được hoàn thành thành công, máy chủ sẽ gửi một thông báo xác 롤 토토c, theo sau là một thông báo xác 롤 토토c. Xác 롤 토토cSlfinal chứa dữ liệu máy chủ từ khách hàng bổ sung, có nội dung đặc biệt với cơ chế xác 롤 토토c được chọn. Nếu cơ chế xác 롤 토토c không sử dụng dữ liệu bổ sung được gửi khi hoàn thành, thông báo xác 롤 토토c không được gửi.

Khi lỗi, máy chủ có thể hủy bỏ xác 롤 토토c ở bất kỳ giai đoạn nào và gửi errormessage.

​​53.3.1. Xác 롤 토토c scram-sha-256#

Các cơ chế SASL đã triển khai tại thời điểm này làScram-Sha-256và biến thể của nó với liên kết kênhScram-sha-256-plus. Chúng được mô tả chi tiết trongRFC 7677RFC 5802.

Khi Scram-Sha-256 được sử dụng trong PostgreSQL, máy chủ sẽ bỏ qua tên người dùng mà máy khách gửi trongmáy khách-đầu-Message. Tên người dùng đã được gửi trong thông báo khởi động được sử dụng thay thế.PostgreSQLsupports multiple character encodings, while SCRAM dictates utf-8 to be used for the user name, so it might be impossible to represent the PostgreSQL user name in utf-8.

Thông số kỹ thuật Scram chỉ ra rằng mật khẩu cũng có trong UTF-8 và được xử lý vớiSASLPREPThuật toán.PostgreSQLTuy nhiên, không yêu cầu UTF-8 được sử dụng cho mật khẩu. Khi mật khẩu của người dùng được đặt, nó được xử lý với SASLPREP như thể nó ở UTF-8, bất kể mã hóa thực tế được sử dụng. Tuy nhiên, nếu đó không phải là chuỗi byte UTF-8 hợp pháp hoặc nó chứa các chuỗi byte UTF-8 bị cấm bởi thuật toán SASLPrep, mật khẩu thô sẽ được sử dụng mà không cần xử lý SASLPREP, thay vì ném lỗi. Điều này cho phép mật khẩu được chuẩn hóa khi nó ở UTF-8, nhưng vẫn cho phép sử dụng mật khẩu không UTF-8 và không yêu cầu hệ thống biết mã hóa mật khẩu nào.

Liên kết kênhđược hỗ trợ trong các bản dựng PostgreSQL với hỗ trợ SSL. Tên cơ chế SASL cho scram với liên kết kênh làScram-sha-256-plus. Loại liên kết kênh được sử dụng bởi PostgreSQL làTLS-server-end-point.

inScramKhông có liên kết kênh, máy chủ chọn một số ngẫu nhiên được truyền đến máy khách được trộn với mật khẩu do người dùng cung cấp trong băm mật khẩu truyền. Mặc dù điều này ngăn không cho băm mật khẩu được truyền lại thành công trong một phiên sau đó, nhưng nó không ngăn được máy chủ giả giữa máy chủ thực và máy khách đi qua giá trị ngẫu nhiên của máy chủ và xác thực thành công.

Scramvới ràng buộc kênh ngăn chặn các cuộc tấn công giữa các trung bình như vậy bằng cách trộn chữ ký của chứng chỉ của máy chủ vào băm mật khẩu truyền. Mặc dù máy chủ giả có thể truyền lại chứng chỉ của máy chủ thật, nhưng nó không có quyền truy cập vào khóa riêng phù hợp với chứng chỉ đó và do đó không thể chứng minh đó là chủ sở hữu, gây ra lỗi kết nối SSL.

Ví dụ

  1. Máy chủ gửi tin nhắn xác thực. Nó bao gồm một danh sách các cơ chế xác thực SASL mà máy chủ có thể chấp nhận. Đây sẽ làScram-sha-256-plusScram-Sha-256Nếu máy chủ được xây dựng với hỗ trợ SSL, hoặc nếu không thì chỉ sau này.

  2. Máy khách trả lời bằng cách gửi tin nhắn Saslinitialresponse, cho biết cơ chế đã chọn,Scram-Sha-256hoặcScram-sha-256-plus. .khách hàng-đầu-Message. Themáy khách-đầu-MessageCũng chứa loại liên kết kênh được khách hàng chọn.

  3. Máy chủ gửi tin nhắn xác thựcaSlContinue, với scramMáy chủ-First-Messagelàm nội dung.

  4. Máy khách gửi tin nhắn SASLresponse, với Scram-Kết hợp khách hànglàm nội dung.

  5. Máy chủ gửi một thông báo xác thựcaSlfinal, với scram-Final-Message, theo dõi ngay là một thông báo xác 롤 토토c.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.