Bạn nên sử dụng bảo mật JAAS do các thùng chứa Servlet cung cấp như Tomcat, Websphere, Glassfish.
Theo mặc định các container hỗ trợ các loại xác thực:
- BASIC
- DIGEST
- MẪU
- KHÁCH HÀNG-CERT
HTTP Basic Authentication
Chỉ định xác thực cơ sở HTTP yêu cầu máy chủ yêu cầu tên người dùng và mật khẩu từ máy khách web và xác minh rằng tên người dùng và mật khẩu hợp lệ bằng cách so sánh chúng với cơ sở dữ liệu của người dùng được ủy quyền trong lĩnh vực được chỉ định hoặc mặc định.
Xác thực cơ bản là mặc định khi bạn không chỉ định cơ chế xác thực.
Khi xác thực cơ bản được sử dụng, những hành động sau đây xảy ra:
- Một khách hàng yêu cầu quyền truy cập vào một tài nguyên được bảo vệ.
- Máy chủ web trả về hộp thoại yêu cầu tên người dùng và mật khẩu.
- Khách hàng gửi tên người dùng và mật khẩu cho máy chủ. 4. \ Máy chủ xác thực người dùng trong lĩnh vực được chỉ định và, nếu thành công, trả về tài nguyên được yêu cầu.
Hình dưới đây cho thấy điều gì xảy ra khi bạn chỉ định xác thực cơ sở HTTP.
HTTP Basic Authentication Sơ đồ của bốn bước trong xác thực cơ bản HTTP giữa client và server
Mẫu-Based Xác thực
xác thực Form-based cho phép các nhà phát triển để kiểm soát giao diện và cảm nhận của màn hình xác thực đăng nhập bằng cách tùy chỉnh màn hình đăng nhập và các trang lỗi mà trình duyệt HTTP hiển thị cho người dùng cuối. Khi xác thực dựa trên biểu mẫu được khai báo, các hành động sau xảy ra.
- Khách hàng yêu cầu quyền truy cập vào tài nguyên được bảo vệ.
- Nếu khách hàng chưa được xác thực, máy chủ sẽ chuyển hướng khách hàng đến trang đăng nhập.
- Khách hàng gửi biểu mẫu đăng nhập vào máy chủ.
- Máy chủ cố gắng xác thực người dùng.
- Nếu xác thực thành công, hiệu trưởng của người dùng đã được xác thực được chọn để đảm bảo rằng vai trò đó được ủy quyền truy cập vào tài nguyên. Nếu người dùng được ủy quyền, máy chủ chuyển hướng máy khách đến tài nguyên bằng cách sử dụng đường dẫn URL được lưu trữ.
- Nếu xác thực không thành công, máy khách được chuyển tiếp hoặc chuyển hướng đến trang lỗi.
Hình dưới đây cho thấy điều gì xảy ra khi bạn chỉ định xác thực dựa trên biểu mẫu.
Khi bạn tạo một tên đăng nhập form-based, hãy chắc chắn để duy trì các phiên sử dụng các tập tin cookie hay thông tin phiên SSL.
Để xác thực tiến hành một cách thích hợp, hành động của biểu mẫu đăng nhập phải luôn là j_security_check. Hạn chế này được thực hiện sao cho biểu mẫu đăng nhập sẽ hoạt động bất kể tài nguyên đó là gì và để tránh yêu cầu máy chủ chỉ định trường hành động của biểu mẫu gửi đi. Đoạn mã sau đây cho thấy cách thức nên được mã hóa thành các trang HTML:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
Digest Authentication
Giống như xác thực cơ bản, tiêu hóa xác thực xác thực người dùng dựa trên một tên người dùng và mật khẩu. Tuy nhiên, không giống như xác thực cơ bản, xác thực thông báo không gửi mật khẩu người dùng qua mạng. Thay vào đó, khách hàng gửi một băm mật mã một chiều của mật khẩu và dữ liệu bổ sung. Mặc dù mật khẩu không được gửi trên dây, xác thực thông báo yêu cầu phải có sẵn mật khẩu văn bản rõ ràng cho vùng chứa xác thực để nó có thể xác thực các trình xác thực đã nhận bằng cách tính toán thông báo dự kiến.
Tài liệu tham khảo: