HTTP Cookie-based Authentication là phương pháp xác thực người dùng trong HTTP sử dụng cookie. Khi người dùng đăng nhập vào hệ thống, server sẽ tạo ra một cookie chứa thông tin đăng nhập và gửi về cho trình duyệt của người dùng. Mỗi lần người dùng gửi yêu cầu đến server, cookie này sẽ được gửi kèm theo để server biết được người dùng đã đăng nhập hay chưa. Phương pháp này được sử dụng rộng rãi trong các ứng dụng web để xác thực người dùng một cách đơn giản và hiệu quả.
Phương thức xác thực bằng cookie sử dụng các cookie HTTP để xác thực yêu cầu của khách hàng. Cookie là một đoạn mã được lưu trữ trên máy tính của khách hàng và được gửi đến máy chủ mỗi khi khách hàng truy cập vào trang web. Nhờ vào cookie, máy chủ có thể duy trì phiên làm việc của khách hàng thông qua giao thức HTTP Stateless, tức là không lưu trữ bất kỳ thông tin nào về trạng thái của phiên làm việc. Nhờ đó, khách hàng có thể tiếp tục truy cập vào trang web mà không cần phải xác thực lại mỗi lần truy cập.
Bước 1: Khi khách hàng muốn đăng nhập vào hệ thống, khách hàng sẽ gửi một yêu cầu đăng nhập tới máy chủ. Yêu cầu này sẽ chứa tất cả các thông tin cần thiết để máy chủ có thể xác thực đăng nhập của khách hàng, bao gồm tên đăng nhập và mật khẩu. Sau khi nhận được yêu cầu đăng nhập, máy chủ sẽ kiểm tra thông tin đăng nhập của khách hàng để xác định xem liệu khách hàng có được phép truy cập vào hệ thống hay không.
Bước 2:Nếu thông tin đăng nhập của khách hàng chính xác, máy chủ sẽ xác thực đăng nhập và gửi lại một phản hồi đến khách hàng. Phản hồi này sẽ chứa tiêu đề Set-Cookie, trong đó sẽ bao gồm các thông tin về tên của cookie, ID của cookie, thời gian hết hạn của cookie và các thông tin khác liên quan đến phiên làm việc của khách hàng. Sau khi khách hàng nhận được phản hồi này, cookie sẽ được lưu trữ trên máy tính của khách hàng và sẽ được gửi đến máy chủ mỗi khi khách hàng truy cập vào trang web. Cookie này cho phép máy chủ xác định khách hàng đã đăng nhập vào hệ thống hay chưa mà không cần phải yêu cầu khách hàng phải xác thực lại mỗi lần truy cập.
Bước 3: Sau khi khách hàng đã đăng nhập thành công và nhận được cookie từ máy chủ, mỗi khi khách hàng truy cập vào trang web, cookie sẽ được tự động gửi đến máy chủ bằng cách đưa vào tiêu đề Cookie của yêu cầu HTTP. Điều này cho phép máy chủ xác định phiên làm việc của khách hàng và đảm bảo rằng khách hàng không cần phải xác thực lại mỗi khi truy cập vào một trang web mới trên cùng một trang web. Tiến trình này được thực hiện tự động bởi trình duyệt web của khách hàng, không cần sự can thiệp của khách hàng.
Bước 4: Khi khách hàng muốn đăng xuất khỏi hệ thống, khách hàng sẽ gửi yêu cầu đăng xuất tới máy chủ. Sau đó, máy chủ sẽ gửi lại tiêu đề ‘Set-Cookie’ với thời gian hết hạn đã được đánh dấu, khiến cho cookie này sẽ không còn hiệu lực. Điều này đảm bảo rằng khách hàng sẽ không thể truy cập vào các trang web yêu cầu đăng nhập trong hệ thống với cùng một cookie đã hết hạn. Sau khi cookie đã hết hạn, khách hàng sẽ cần phải đăng nhập lại để truy cập vào các trang web yêu cầu xác thực.
Phương pháp xác thực Cookie có một số hạn chế. Đầu tiên, Cookie có thể bị tấn công bởi Cross-Site Request Forgery (CSRF), khiến người dùng phải đối mặt với nguy cơ bị tin tặc giả mạo yêu cầu truy cập trang web một cách bất hợp pháp. Vì vậy, đề nghị sử dụng Cookie kết hợp với các phương pháp bảo mật khác, chẳng hạn như sử dụng CSRF tokens, để đảm bảo an toàn cho người dùng.
Thứ hai, Cookie thường chỉ hoạt động trên một miền duy nhất, do đó có thể gây ra vấn đề nếu API từ các miền khác nhau gốc từ các nền tảng khác nhau. Ví dụ, khi phát triển một ứng dụng trên nhiều nền tảng, có thể có nhiều miền được sử dụng, khiến cho Cookie trở nên không hữu ích và khó sử dụng.