SASLlà một khung để xác tỷ lệ kèo bóng đá trong các giao thức định hướng kết nối. Ngay bây giờ,PostgreSQLThực hiện ba cơ chế tỷ lệ kèo bóng đá: Scram-Sha-256, Scram-Sha-256-Plus và OAuthbearer. Nhiều hơn có thể được thêm vào trong tương lai.
Lưu lượng thông báo tỷ lệ kèo bóng đá
Để bắt đầu trao đổi tỷ lệ kèo bóng đá, 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ế tỷ lệ kèo bóng đá mà máy chủ có thể chấp nhận, theo thứ tự ưa thích của máy chủ.
Khách hàng chọn một trong các cơ chế được hỗ trợ từ danh sách và gửi tin nhắn Saslinitialresponse đến tỷ lệ kèo bóng đá chủ. Thông báo bao gồm tên của cơ chế đã chọn và phản hồi tỷ lệ kèo bóng đá khách ban đầu tùy chọn, nếu cơ chế được chọn sử dụng đó.
Một hoặc nhiều tin nhắn-Challenge và phản hồi 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 tỷ lệ kèo bóng đá thựcaSlContinue, sau đó là phản hồi từ máy khách trong một thông báo SASLResponse.
Cuối cùng, khi trao đổi xác tỷ lệ kèo bóng đá được hoàn thành thành công, máy chủ sẽ gửi một thông báo xác tỷ lệ kèo bóng đá tùy chọn, theo sau là một thông báo xác tỷ lệ kèo bóng đá. Xác thự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 tỷ lệ kèo bóng đá được chọn.
Khi lỗi, máy chủ có thể hủy bỏ xác tỷ lệ kèo bóng đá ở bất kỳ giai đoạn nào và gửi errormessage.
Scram-sha-256
và biến thể của nó với liên kết kênhScram-sha-256-plus
, là các cơ chế xác tỷ lệ kèo bóng đá dựa trên mật khẩu. Chúng được mô tả chi tiết trongRFC 7677vàRFC 5802.
Khi Scram-Sha-256 được sử dụng trong PostgreSQL, tỷ lệ kèo bóng đá chủ sẽ bỏ qua tên người dùng mà tỷ lệ kèo bóng đá khách gửi trongtỷ lệ kèo bóng đá 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ế.PostgreSQL11775_11947
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 tỷ lệ kèo bóng đá tế được sử dụng.
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 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 để 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ủ tỷ lệ kèo bóng đá và máy khách đi qua giá trị ngẫu nhiên của máy chủ và xác tỷ lệ kèo bóng đá 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ỉ tỷ lệ kèo bóng đá chủ vào băm mật khẩu truyền. Mặc dù tỷ lệ kèo bóng đá chủ giả có thể truyền lại chứng chỉ của tỷ lệ kèo bóng đá 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ụ
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ế tỷ lệ kèo bóng đá mà máy chủ có thể chấp nhận.Scram-sha-256-plus
vàScram-Sha-256
Nếu tỷ lệ kèo bóng đá chủ được xây dựng với hỗ trợ SSL, hoặc nếu không chỉ cái sau.
Khách hàng trả lời bằng cách gửi tin nhắn Saslinitialresponse, cho biết cơ chế đã chọn,Scram-Sha-256
hoặcScram-sha-256-plus
. .tỷ lệ kèo bóng đá khách-đầu-Message
. Thetỷ lệ kèo bóng đá khách-đầu-Message
Cũng chứa loại liên kết kênh được khách hàng chọn.
Máy chủ gửi tin nhắn tỷ lệ kèo bóng đá thựcaSlContinue, với scramtỷ lệ kèo bóng đá chủ-First-Message
làm nội dung.
tỷ lệ kèo bóng đá khách gửi tin nhắn SASLresponse, với Scram-Kết hợp khách hàng
làm nội dung.
Máy chủ gửi tin nhắn tỷ lệ kèo bóng đá thựcaSlfinal, với scram-Final-Message
, theo dõi ngay là một thông báo xác tỷ lệ kèo bóng đá.
Oauthbearer
là một cơ chế dựa trên mã thông báo để xác tỷ lệ kèo bóng đá được liên kết. Nó được mô tả chi tiết trongRFC 7628.
Một trao đổi điển hình khác nhau tùy thuộc vào việc tỷ lệ kèo bóng đá khách đã có mã thông báo của người mang được bộ nhớ cache cho người dùng hiện tại hay không. Nếu không, trao đổi sẽ diễn ra qua hai kết nối: kết nối "Khám phá" đầu tiên để lấy siêu dữ liệu OAuth từ tỷ lệ kèo bóng đá chủ và kết nối thứ hai để gửi mã thông báo sau khi tỷ lệ kèo bóng đá khách có được nó.
Cơ chế này được khởi tạo của khách hàng, như Scram. Phản hồi ban đầu của tỷ lệ kèo bóng đá khách bao gồm tiêu đề "GS2" tiêu chuẩn được sử dụng bởi Scram, theo sau là danh sáchkey = value
cặp. Khóa duy nhất hiện được tỷ lệ kèo bóng đá chủ hỗ trợ làauth
, chứa mã thông báo của người mang.OAuthbearer
Ngoài ra chỉ định ba thành phần tùy chọn của phản hồi ban đầu của tỷ lệ kèo bóng đá khách (Theauthzid
của tiêu đề GS2 vàhost
vàCổng
Khóa) hiện đang bị tỷ lệ kèo bóng đá chủ bỏ qua.
OAuthbearer
Không hỗ trợ liên kết kênh và không có cơ chế "OAuthbearer-Plus". Cơ chế này không sử dụng dữ liệu máy chủ trong quá trình xác tỷ lệ kèo bóng đá thành công, do đó, thông báo xác tỷ lệ kèo bóng đá không được sử dụng trong trao đổi.
Ví dụ
Trong lần trao đổi đầu tiên, máy chủ sẽ gửi một thông báo xác tỷ lệ kèo bóng đá vớiOAuthbearer
Cơ chế được quảng cáo.
Khách hàng trả lời bằng cách gửi tin nhắn Saslinitialresponse cho biếtOAuthbearer
Cơ chế. Giả sử tỷ lệ kèo bóng đá khách chưa có mã thông báo mang hợp lệ cho người dùng hiện tại,auth
Trường trống, cho biết kết nối khám phá.
Máy chủ gửi tin nhắn tỷ lệ kèo bóng đá thựcaSlContinue chứa lỗitrạng thái
Bên cạnh một URI nổi tiếng và phạm vi mà khách hàng nên sử dụng để tiến hành lưu lượng OAuth.
tỷ lệ kèo bóng đá khách gửi tin nhắn SASLResponse chứa bộ trống (một0x01
byte) để hoàn thành một nửa của trao đổi khám phá.
tỷ lệ kèo bóng đá chủ gửi ErrorMessage để thất bại trong trao đổi đầu tiên.
18999_19237OAuthbearer
Không chỉ định hoặc bắt buộc bất kỳ phương thức cụ thể nào để có được mã thông báo.)
Một khi nó có mã thông báo, tỷ lệ kèo bóng đá khách kết nối lại với tỷ lệ kèo bóng đá chủ để trao đổi cuối cùng:
Máy chủ một lần nữa gửi tin nhắn xác tỷ lệ kèo bóng đá vớiOauthbearer
Cơ chế được quảng cáo.
Khách hàng trả lời bằng cách gửi tin nhắn Saslinitialresponse, nhưng lần này làauth
Trường trong thông báo chứa mã thông báo của người mang thu được trong luồng tỷ lệ kèo bóng đá khách.
Máy chủ xác nhận mã thông báo theo hướng dẫn của nhà cung cấp mã thông báo. Nếu máy khách được ủy quyền kết nối, nó sẽ gửi một thông báo xác tỷ lệ kèo bóng đá để kết thúc trao đổi SASL.