SSL vs SASL
Đúng là SASL không phải là một giao thức mà là một lớp trừu tượng. Nó cũng đúng là SSL và SASL là loại cung cấp các tính năng tương tự. Cả hai đều cung cấp xác thực, ký dữ liệu và mã hóa.
SSL được thực hiện ở lớp vận chuyển và nó là thông thường trong suốt đối với giao thức bên dưới. Ví dụ: bạn có thể sử dụng SSL trên LDAP hoặc HTTP. Tuy nhiên, trong một số trường hợp, việc sửa đổi các giao thức hiện có là cần thiết để chuyển sang chế độ bảo mật. Ví dụ, POP3 và IMAP được mở rộng để có lệnh STARTTLS để bắt đầu sử dụng SSL. Từ góc độ đó, đây là loại tương tự như những gì SASL đang làm.
Mặt khác, nhiều giao thức cũng được mở rộng để cung cấp khả năng SASL. Here là danh sách các giao thức. Một lần nữa, POP3 và IMAP là hai trong số họ và họ đang sử dụng các lệnh khác nhau để bắt đầu xác thực.
Vì vậy, khi nào chúng ta nên sử dụng SSL và khi nào chúng ta nên sử dụng SASL?
Sự khác biệt rõ ràng giữa SSL và SASL là SASL cho phép bạn chọn các cơ chế khác nhau để xác thực máy khách trong khi SSL là loại ràng buộc để thực hiện xác thực dựa trên chứng chỉ. Trong SASL, bạn có thể chọn sử dụng GSSAPI, Kerberos, NTLM, v.v.
Vì sự khác biệt này, có một số trường hợp, nó chỉ trực quan hơn để sử dụng SASL chứ không phải SSL. Ví dụ: ứng dụng khách của bạn đang sử dụng Kerberos để xác thực người dùng cuối. Máy chủ của bạn cần xác thực ứng dụng khách. Vì ứng dụng khách của bạn đã có thông tin đăng nhập Kerberos (trong thuật ngữ Kerberos, một vé), nên sử dụng thông tin đăng nhập Kerberos để xác thực với máy chủ. Tất nhiên, bạn luôn có thể thiết lập SSL để làm điều tương tự. Tuy nhiên, điều đó có nghĩa là trên cơ sở hạ tầng Kerberos hiện có, bạn cần phải thiết lập cơ sở hạ tầng Authority Authority và bằng cách nào đó tương quan chứng chỉ ứng dụng khách với thông tin đăng nhập Kerberos. Đó là doable nhưng rất nhiều công việc.
Ngoài ra, đôi khi, bạn cần sử dụng một số tính năng chỉ có sẵn trong cơ chế SASL chứ không phải SSL. Ví dụ: Kerberos cho phép bạn chuyển tiếp vé từ máy khách đến máy chủ để máy chủ có thể sử dụng vé để truy vấn một số tài nguyên thay mặt cho máy khách. Một ví dụ phổ biến là bạn có một máy chủ ứng dụng và một cơ sở dữ liệu. Ứng dụng máy khách xác thực với máy chủ ứng dụng và máy chủ ứng dụng cần truy vấn cơ sở dữ liệu để xử lý ứng dụng khách bằng thông tin đăng nhập của máy khách. SSL không thể cung cấp tính năng này cho bạn nhưng Kerberos hỗ trợ tính năng này. Vì vậy, trong trường hợp đó, bạn phải chọn sử dụng SASL.
Trong một số trường hợp, bạn muốn sử dụng SSL nhưng không sử dụng SASL. Ví dụ, mở rộng giao thức không phải là một lựa chọn hoặc bạn muốn mã hóa mọi gói tin được trao đổi bằng cách sử dụng giao thức bên dưới.
như thế nào GSSAPI liên quan đến Kerberos và SASL
Theo wiki page này, cả hai GSSAPI và Kerberos được hỗ trợ mechansim trong SASL. GSSAPI là một giao diện lập trình chung. Ý tưởng là để cho người viết ứng dụng sử dụng một API chung duy nhất để thực hiện xác thực, mã hóa, v.v. bất kể giao thức nào được sử dụng bên dưới. GSSAPI triển khai Kerberos. Vì vậy, bạn có thể sử dụng GSSAPI để thực hiện xác thực Kerberos.
như thế nào JAAS liên quan đến SASL
Thành thật mà nói, tôi không phải là một chuyên gia về Java. Từ những gì tôi đọc, có vẻ như JAAS chỉ là một khung xác thực có thể cắm được. Tôi tin rằng ý tưởng này tương tự như GSSAPI. Nó cung cấp một giao diện lập trình duy nhất bất kể phương thức xác thực đang sử dụng là gì. Trong khi GSSAPI tập trung vào trao đổi thông điệp xác thực và bảo mật, JAAS đang tập trung vào xác thực và ủy quyền. Tôi không tìm thấy bằng chứng nào cho thấy JAAS cũng là một trong những cơ chế SASL. Tôi tin rằng cần có một số lớp trợ giúp từ thư viện Java giúp bạn triển khai các cơ chế SASL tùy chỉnh. Trong khi thực hiện cơ chế SASL tùy chỉnh, nó có thể có ý nghĩa để chỉ sử dụng JAAS.
Lớp xác thực và lớp vận chuyển an toàn là một điều khá khác, mặc dù cả hai có thể được sử dụng để thực hiện xác thực. Nhưng nếu bạn hỏi câu hỏi này, tôi tự hỏi nếu bạn đang tìm kiếm một vấn đề để giải quyết, hoặc nếu bạn đang cố gắng giải quyết một vấn đề. –
Tôi đang cố gắng tìm hiểu xem máy khách và máy chủ Java của tôi có cần sử dụng SSL hoặc SASL để bảo vệ dữ liệu người dùng/yêu cầu/phản hồi khi họ liên lạc với nhau hay không, vì vậy nó sẽ là thứ hai (cố gắng giải quyết vấn đề). – IAmYourFaja