2012-06-13 10 views
5

Trường hợp chung: Một ứng dụng đơn giản cho thấy dịch vụ của mình thông qua EJB (3.1) - hầu hết trong số đó không có phiên bản đậu (không có gì ở đây) và khách hàng dựa trên SWING rằng, gọi qua giao diện từ xa các dịch vụ này và làm những gì họ phải làm.Apache Shiro trên ứng dụng khách Swing - EJB 3.1 Case cho ủy quyền xác thực

Bảo mật: Tôi muốn xác thực/ủy quyền chu kỳ cuộc gọi này và tất nhiên bảo vệ các dịch vụ của tôi. Câu trả lời rõ ràng sẽ là sử dụng JAAS trong máy chủ và bất kỳ thiết lập dây tùy chỉnh nào trên máy chủ cơ bản. Đó vẫn là một lựa chọn

Apache Shiro: Vì vậy, rất nhiều người nói về Apache Shiro và thực sự nó có API rất đơn giản và cơ chế - đó là khả năng có thể là máy chủ ứng dụng độc lập.

câu hỏi kỹ thuật:

  1. phiên: Trong trường hợp của tôi, tôi không có một phiên HTTP - và từ những gì tôi đã hiểu Shiro ít nhất cần một số loại ID PHIÊN mà tôi cần phải vượt qua xung quanh. Bất kỳ cách nào tốt đẹp về việc tiêm thông tin người dùng trong các cuộc gọi RMI/IIOP của tôi vào máy chủ mà không làm ô nhiễm API doanh nghiệp của tôi?

  2. Triển khai phía máy chủ: Đối với một số tài nguyên tôi đã trải qua, tôi nghĩ tôi có thể triển khai Trình quản lý mặc định Shiro Shiro bằng cách tham chiếu từ bean Singleton Ejb 3.1. Bất kỳ ý tưởng nào khác? Sau đó, tôi có thể dễ dàng tạo ra một máy đánh chặn và thêm nó vào các cuộc gọi từ xa của mình - vì vậy khi một cuộc gọi mới được thực hiện thông qua phương pháp EJB từ xa của tôi - Bộ phận Interiro Intereceptor để xác nhận người dùng của tôi hoặc kiểm tra các quyền cụ thể.

Mọi nhận xét/mẹo/ví dụ?

Rất cám ơn

Trả lời

0

Từ shiro, hãy thử sử dụng mẫu ServiceLocator. Việc tra cứu EJB khác nhau giữa các vùng chứa (JBoss, Netweaver, Weblogig, v.v.).

Trong Máy chủ ứng dụng, hãy thử sử dụng các hạn chế dựa trên vùng chứa của bảo mật (@RolesAllowed, @PermitAll, @Deny ...). JAAS sẽ tạo chủ đề với các hiệu trưởng của người dùng, vì vậy chỉ cần sử dụng ủy quyền vùng chứa (@RolesAllowed, @PermitAll, @Deny ...). Có thể tốt hơn khi bạn di chuyển từ vùng chứa này sang vùng chứa khác.

+0

Xin chào Marcelo, cảm ơn câu trả lời của bạn - nhưng nếu tôi sắp sử dụng JAAS thì tôi cũng không tìm được lợi thế lớn về dây shiro. Ý tưởng của tôi là vượt qua 100% JAAS và triển khai mọi thứ bằng Shiro. – javapapo

+0

Ok. Nếu bạn không nghĩ rằng vấn đề làm cho ứng dụng trở thành nhà cung cấp phụ thuộc vào shiro thì không có vấn đề gì. Những gì tôi có nghĩa là, cotainer đã có triển khai bảo mật, nếu bạn sử dụng container. Bạn có thể mất một số chức năng như ràng buộc web.xml hoặc, Chú thích hạn chế bảo mật. – Marcelo