2012-09-24 14 views
11

Giả sử tôi có một ứng dụng máy chủ Java, ứng dụng này thực hiện một số dịch vụ web. Giả sử, tôi có thể xác thực người dùng ứng dụng.Cách hạn chế sử dụng các dịch vụ web trong ứng dụng Java?

Bây giờ, tôi muốn thêm một số giới hạn cho mỗi người dùng vào việc sử dụng dịch vụ: ví dụ: giới hạn tốc độ (yêu cầu mỗi giây), kích thước yêu cầu tối đa, vv

Có thư viện "sẵn sàng để sử dụng" trong Java để thực hiện điều đó không?

+1

Chỉ cần làm rõ - ý của bạn là giới hạn dựa trên nhận dạng (ví dụ: người dùng X được phép gọi dịch vụ chỉ 100 lần mỗi phút)? – home

+0

Vâng, ý tôi là giới hạn dựa trên danh tính. – Michael

Trả lời

1

Bạn có thể làm điều đó với Apache CXF bằng cách cấu hình một đánh chặn. Điều này page có một ví dụ về cấu hình mức cao. Điều này page có chi tiết về interceptors. Bạn có thể nhận được như ưa thích như bạn muốn với xác nhận của bạn. Tôi không biết làm thế nào để có được người dùng được xác thực.

1

Nếu bạn có dịch vụ xác thực/ủy quyền mà tất cả các cuộc gọi của bạn đều trải qua thì giới hạn này cho mỗi người dùng có thể được tích hợp vào đó. Tôi không biết về một khung công tác cho phép bạn thực hiện mà không cần mã hóa tùy chỉnh.

Lý tưởng nhất loại logic này được cấu hình tốt nhất bên ngoài dịch vụ. Tôi biết lạc đà cung cấp trong điều chỉnh được xây dựng cho số lượng yêu cầu. Bạn có thể xác định chính sách điều chỉnh của riêng bạn để lập bản đồ số lượng yêu cầu của mỗi người dùng.

1

Bạn cần tạo lớp ngăn chặn đơn giản. Có một phương thức onPreExecute(), nơi bạn có thể đặt kiểm tra tùy chỉnh của mình. Tôi đã sử dụng nó với Spring.