Xin chào, điều này dường như đã được thảo luận khá thường xuyên nhưng tôi muốn thực hiện một câu hỏi đơn giản, được tưới nước xung quanh việc xác thực với các dịch vụ RESTful. Kịch bản như sau:Dịch vụ xác thực người dùng RESTful
- Có một hệ thống chứa người dùng đã đăng ký cho một ứng dụng. Hệ thống hiển thị API RESTful để truy cập những người dùng này.
- Có ứng dụng giao diện người dùng có biểu mẫu đăng nhập. Ứng dụng có thể là nội bộ hoặc bên ngoài.
- Ứng dụng đầu cuối cần sử dụng dữ liệu trong hệ thống Người dùng để xác thực người dùng.
Câu hỏi bây giờ là cách xác thực người dùng có thông tin đăng nhập (tên người dùng/mật khẩu) được nhập trong ứng dụng khách so với dữ liệu trong hệ thống Người dùng sao cho an toàn và hiệu quả? Vì lợi ích của câu hỏi này, giả sử ứng dụng khách là nội bộ của một số loại Intranet nhưng các ứng dụng sẽ không nằm trên cùng một máy và chỉ có thể giao tiếp thông qua dịch vụ.
Tôi hiểu ý tưởng về việc ứng dụng được "điều hướng siêu văn bản" nhưng chúng tôi có thể cung cấp dịch vụ lọc/tìm kiếm. Ví dụ, hãy xem xét các nguồn lực và API như sau:
- http://example.com/users
- GET - lấy tất cả người dùng (paged, hypermedia driven)
- POST - tạo người dùng mới
- PUT/DELETE không được hỗ trợ
- http://example.com/users/[id]
- GET - trả về một đại diện đầy đủ của một người dùng với id = {id}
- PUT - cập nhật người dùng, mất trong bất kỳ loại phương tiện truyền thông được xác định trước
- DELETE - xoá người sử dụng (với sự cho phép thích hợp)
- POST không được hỗ trợ
Dựa trên trên, ý tưởng của tôi sẽ có ứng dụng client GET vào danh sách người dùng, lọc theo tên người dùng. Dịch vụ sẽ trả lại mật khẩu băm và muối cho máy khách, máy khách sẽ thực hiện xác thực.
Suy nghĩ?
Bạn có thể cụ thể hơn về câu hỏi là gì không? Tôi đang gặp khó khăn trong việc hiểu loại phản hồi nào bạn muốn. –