2010-10-05 48 views
7

không có trạng thái Tôi đang làm việc trên API REST sẽ được các nhà phát triển sử dụng viết ứng dụng dành cho thiết bị di động. Người dùng sẽ có thể sử dụng dịch vụ của bên thứ 3 (Google, Twitter, v.v.) để xác thực bản thân, điều này chủ yếu được xử lý bởi OAuth (tùy thuộc vào dịch vụ được đề cập). Chúng tôi sử dụng OAuth 2 chân giữa ứng dụng khách và Máy chủ API (trong đó khóa người dùng/bí mật là ứng dụng cụ thể, nhà phát triển nhận được nó từ trang web của chúng tôi khi ứng dụng được đăng ký ở đó).Cách triển khai REST API

Vấn đề của tôi là cách xử lý để theo dõi xác thực người dùng theo cách không quốc tịch. Tôi không có thông tin đăng nhập của người dùng để gửi trong mỗi yêu cầu. Tôi có thể tạo session_id duy nhất khi người dùng đăng nhập và sau đó yêu cầu trong mỗi yêu cầu đối với API REST. Có giải pháp nào khác cho vấn đề của tôi không? Có sử dụng session_id duy nhất để xác định người dùng gây ra bất kỳ vấn đề nào từ quan điểm REST API không trạng thái không?

+2

Tôi vẫn đang tiêu hóa bài viết hay này của John Wilander. Có lẽ nó cũng có thể giúp bạn. http://appsandsecurity.blogspot.com/2011/04/rest-and-stateless-session-ids.html – RayLuo

Trả lời

10

Tuyên bố từ chối trách nhiệm: Tôi không phải là chuyên gia bảo mật.

Đừng gọi nó là session_Id. Gọi nó là mã thông báo xác thực và chuyển cho nó tiêu đề HTTP ủy quyền bằng cách sử dụng lược đồ xác thực của riêng bạn. Xem ví dụ Google AuthSub.

Không sử dụng mã thông báo xác thực này cho bất kỳ mục đích nào khác ngoài việc xác định người dùng và xác định xem họ có được phép thực hiện yêu cầu hay không. Không liên kết bất kỳ trạng thái nào với mã thông báo và không truy xuất tùy chọn của người dùng dựa trên nó.

+0

Cảm ơn bạn đã nhập – Andreas

+1

Chỉ để xác minh hiểu biết của mình về điều này, mã thông báo phiên vẫn yêu cầu trạng thái phiên ở phía máy chủ ? Nghĩa là, thời gian tồn tại của phiên được quản lý bởi máy chủ và mã thông báo trở nên không hợp lệ sau khi hết thời gian chờ của phiên máy chủ? Tôi đang tìm kiếm một cách để thực hiện một mục tiêu tương tự trong khi không có khái niệm về một 'phiên' trên máy chủ. – Aron

+1

Đây cũng là những gì tôi thực sự không hiểu. Mọi người đều nói về an ninh và không trạng thái nhưng một phiên cho người dùng vẫn phải được giữ trên máy chủ. – Gambo

Các vấn đề liên quan