【问题标题】:Role based security for OSGiOSGi 基于角色的安全性
【发布时间】:2013-03-21 16:14:21
【问题描述】:

我正在寻找一个安全框架,它允许为 OSGi 服务和 CXF Web 服务提供基于角色的安全性。 前段时间我已经使用了spring security,但是当我们现在切换到蓝图时,据我所知,它不再是一种选择。要配置访问规则,我想主要使用标准@RolesAllowed annotation。那么我最好的起点是什么?我也考虑过自己将其实现为蓝图扩展,但我更喜欢现有的解决方案。

【问题讨论】:

  • 我在我的应用程序中配置了 Shiro,在 Karaf 上运行。我设法配置安全管理器,因此我可以使用存储在数据库中的凭据登录/注销。现在我正在努力寻找使用这些注释的方法。你找到解决办法了吗?
  • 我最后没有用shiro。相反,我使用了 CXF JaasLoginFeature。它使用凭据进行 jaas 登录,然后可以从同一线程中检索该凭据。例如 aries blueprint-authz 模块使用 jaas 登录。
  • CXF Jaas 是否也支持类似于 Shiro 提供的Session 的功能?
  • CXF 提供与 cookie 耦合的会话,但它与 shiro 会话不在同一级别

标签: java security osgi blueprint-osgi


【解决方案1】:

我建议你改用 Apache Shiro,http://shiro.apache.org/

它为身份验证、授权、加密和会话管理提供了简单的 API。它也可以很容易地部署在 OSGI 容器中。这里列出了 Apache Shiro 的一些优点Apache Shiro vs Java EE native APIs

【讨论】:

  • Shiro 在我正在调查的框架列表中。是否有一些文档如何为 OSGi 设置它?特别是我正在寻找一些关于如何将其用于普通 OSGi 服务和 CXF 服务的示例/提示。我发现的示例总是指 java web (servlet) 应用程序。因此,例如,如果我创建一个 OSGi 服务,如何在其上启用 shiro 以及如何使其遵循 RolesAllowed 注释?或者,如果我调用 OSGi 服务,我该如何进行身份验证。我想会有一些本地线程来保存我的身份验证信息。
【解决方案2】:

同时,我创建了一个基于 JAAS 和 Java EE 注释(@RolesAllowed、@PermitAll、@DenyAll)的授权蓝图扩展。您可以将扩展添加到任何蓝图文件。然后它将扫描所有 bean 以查找这些注释并在找到它们时拦截调用。它使用现有的 JAAS 上下文来获取用户的角色。

因此,此操作的先决条件是进行 JAAS 登录。我还创建了一个 CXF JAASAuthentication 功能,该功能基于基本身份验证或 ws 安全用户名主体登录用户。该模块与 Apache Karaf JAAS 支持一起工作。所以所有 karaf 用户和角色都适用。

一旦包含授权模块的 aries 蓝图版本发布,我将创建一个教程来展示如何使用所有这些。同时,如果您尝试并报告您遇到的任何问题,我会很高兴。

顺便说一句。 karaf 的另一种方法是 karaf 3+ 中内置的 OSGi 服务的基于角色的访问控制。它不适用于注释,但也易于使用。看 http://coderthoughts.blogspot.de/2013/10/role-based-access-control-for-karaf.html

【讨论】:

  • Christian,你有你所做的事情的链接吗,因为我有兴趣做与此基本相同的事情(意思是你的蓝图扩展)谢谢。
  • 这应该有助于github.com/cschneider/Karaf-Tutorial/blob/master/cxf/…。注释掉的配置将激活 authz 模块以允许 @RolesAllowed 并且 JAASAuthenticationFeature 负责登录。
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 2012-03-18
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多