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

标签 java swing jboss ejb-3.0 shiro

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

安全:我想验证/授权这个调用周期,当然也想保护我的服务。显而易见的答案是在服务器中使用 JAAS 并在底层服务器上使用任何自定义连接设置。这仍然是一个选择

Apache Shiro:很多人都在谈论 Apache Shiro,实际上它具有非常简单的 API 和机制 - 可能独立于应用程序服务器。

技术问题:

  1. session :在我的例子中,我没有 HTTP session - 据我了解,Shiro 至少需要某种我需要传递的 session ID。在我的 RMI/IIOP 调用中向服务器注入(inject)用户凭据而不污染我的业务 API 的任何好方法?

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

任何评论/提示/示例?

非常感谢

最佳答案

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

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

关于java - Swing 客户端上的 Apache Shiro - EJB 3.1 身份验证授权案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012746/

相关文章:

java - Java 中同一 GridBagLayout 中 JTextField 和 JComboBox 的问题

java - 如何在JTextArea中显示JTree文件

javascript - key 斗篷 |无法在异步函数中等待 updateToken()

java - 我必须找到两个数组多维和锯齿状数组之间的共同元素

Java一次替换字符串中的多个不同子字符串(或以最有效的方式)

java - Eclipse:为什么无法识别手动创建的类?

java - Netbeans 生成的代码

java - AbstractAction 作为 WindowListener

java - JBoss中的类加载顺序

java.lang.NoSuchMethodException : javax. ejb.EJBHome.getHomeHandle()