【问题标题】:How to use JAAS with permission based authorization in OSGi如何在 OSGi 中使用基于权限的授权的 JAAS
【发布时间】:2016-07-25 02:15:31
【问题描述】:

我正在研究创建一个将在 Karaf 上运行的安全应用程序。作为一个从未使用过 JAAS(只与 Shiro 合作过)的人,我很难弄清楚如何在 JAAS 中实际实现任何东西。谷歌并没有多大帮助,因为它每次看到任何与 JAAS 相关的东西时都会偏爱 Spring、JavaEE 和 Struts :) 我想我已经弄清楚如何使用 Karaf 管理领域和登录模块,但我对剩下的任务有一些疑问:

  1. 我实际上如何为我的应用程序创建会话?应用程序的一部分将使用 CXF REST 服务进行通信,这看起来很简单,但我还将构建一个由 Wicket 支持的 Web 前端(我猜测是通过 pax-web)。在这种情况下,如何让 JAAS 使用会话以避免持续登录?

  2. 在 Karaf 中使用 JAAS 的基于权限的安全性。使用 Shiro,我已经习惯了基于权限(或基于操作)的授权,其中一个主题具有多个角色,并且这些角色具有您实际验证的权限。似乎 JAAS 不支持这个开箱即用。有没有办法实现这一点,再次在 Karaf 中使用 JAAS。我应该在哪里指定每个角色的权限?

  3. 这似乎是一个愚蠢的问题,但请尽量不要笑得太厉害,我真的觉得我现在正沉浸在 JAAS 中。执行身份验证检查的正确方法是什么?我看到 AccessControllerSubject.doAsPriviledged 在不同的上下文中使用,我很难发现有什么区别(如果有的话)。

【问题讨论】:

    标签: osgi wicket jaas apache-karaf


    【解决方案1】:

    您可以使用CXF JAAS Login Feature。它对 karaf JAAS 后端进行 JAAS 登录,无需任何额外配置。结果是在当前线程上登录。

    可以使用以下方法检索主题:

    Subject subject = Subject.getSubject(AccessController.getContext());
    

    然后您可以从主题中检索主体。通常,一个主体是用户,另一个是角色。

    因此,您可以使用它编写自己的代码来检查权限或与我认为的 shiro 集成。

    Aries 还有blueprint authz 模块,它允许使用@RolesAllowed 进行基于角色的身份验证。在后台,它使用 JAAS 主题的角色。

    我还找到了一个完整的小应用程序 an example

    【讨论】:

    • 嗨,克里斯蒂安。感谢您的迅速回复。你知道如何在 karaf 中使用 Web 前端处理使用 JAAS。这将需要一些用户反应登录功能,以及会话管理。我很难找到这方面的具体信息。
    • 一种信息来源可能是 karaf Web 控制台集成。它还使用 JAAS 进行登录。见github.com/apache/karaf/blob/master/webconsole/console/src/main/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2015-11-06
    • 2015-01-18
    • 2021-09-14
    • 2013-07-07
    • 2019-12-08
    相关资源
    最近更新 更多