Swing客户端上的Apache Shiro - 用于身份验证授权的EJB 3.1案例

jav*_*apo 5 java swing jboss shiro ejb-3.0

一般情况:一个通过EJB(3.1)公开其服务的简单应用程序 - 大多数是无状态会话bean(这里没什么好玩的)和基于SWING的客户端,通过远程接口调用这些服务并完成他们必须做的事情.

安全性:我想验证/授权此循环调用,当然还要保护我的服务.显而易见的答案是在服务器中使用JAAS以及在底层服务器上进行任何自定义布线设置.这仍然是一种选择

Apache Shiro:很多人都在谈论Apache Shiro,事实上它有一个非常简单的API和机制 - 可能与应用程序服务器无关.

技术问题:

  1. 会话:在我的情况下,我没有HTTP会话 - 从我所理解的Shiro至少需要某种我需要传递的SESSION ID.在我的RMI/IIOP中注入用户凭据的任何好方法都可以调用服务器而不会污染我的业务API?

  2. 服务器端实现:对于我所经历的少数资源,我认为我可以通过从Singleton Ejb 3.1 bean"引用它"来实现Shiro DefaultSecurityManager.还有其他想法吗?然后我可以轻松地创建一个拦截器并将其添加到我的远程调用 - 所以当一个新的调用通过我的远程EJB方法 - Shiro Intereceptor来验证我的用户或检查特定的权限.

任何评论/提示/示例?

非常感谢

小智 0

从 shiro 开始,尝试使用 ServiceLocator 模式。EJB 的查找在容器(JBoss、Netweaver、Weblogig 等)之间是不同的。

在应用程序服务器中,尝试使用基于容器的安全约束(@RolesAllowed、@PermitAll、@Deny...)。JAAS 将使用用户主体创建主题,因此只需使用容器授权(@RolesAllowed、@PermitAll、@Deny...)。从一个容器迁移到另一个容器时可能会更好。