【问题标题】:OSGi Security with Apache Karaf: no service ConditionalPermissionAdmin foundApache Karaf 的 OSGi 安全性:找不到服务 ConditionalPermissionAdmin
【发布时间】:2013-10-21 09:40:22
【问题描述】:

我正在尝试在我的应用程序中使用conditional permissions,并在 Karaf 中运行。代码摘自 OSGi in Action 一书(参见full policy example),归结为:

ConditionalPermissionAdmin permAdmin = getConditionalPermissionAdmin(context);
ConditionalPermissionUpdate update = permAdmin.newConditionalPermissionUpdate();
List infos = update.getConditionalPermissionInfos();
infos.clear();

infos.add(permAdmin.newConditionalPermissionInfo(
        "All permissions",
        new ConditionInfo[]{
            new ConditionInfo(
            BundleLocationCondition.class.getName(),
            new String[]{FrameworkUtil.getBundle(this.getClass()).getLocation()})
        },
        new PermissionInfo[]{
            new PermissionInfo(AllPermission.class.getName(), "*", "*")
        },
        ConditionalPermissionInfo.ALLOW));
update.commit();

但是,Karaf 似乎没有注册 ConditionalPermissionAdmin 服务,因为我在查找时收到了 null ServiceReference。

Karaf 安全层有问题吗?如何激活它?

【问题讨论】:

    标签: java security osgi apache-karaf


    【解决方案1】:

    Karaf 没有任何问题,因为您很可能正在使用开箱即用的 Karaf,您很可能也在使用 Felix 框架。对于 Felix,您需要部署额外的 org/apache/felix/org.apache.felix.security/1.4.0/org.apache.felix.framework.security-1.4.0.jar=1。 (很可能还需要更新版本;-)) Equinox 已启用此功能。 更多信息请访问my blog

    【讨论】:

    • 猜对了:我在后台使用 Felix。我将mvn:org.apache.felix/org.apache.felix.framework.security 添加到我现有的功能中,就像一个魅力!但是,当我启动它时,我得到了一个 ClassNotFound 异常PermissionAdmin not found by org.apache.aries.jmx.core。知道这可能来自哪里吗?
    • 我想知道刷新 aries 核心包是否已经解决了这个问题,如果是这样,请确保您在早期阶段(低启动级别)配置了 startup.properties 中的权限管理包。
    猜你喜欢
    • 1970-01-01
    • 2014-03-11
    • 2015-07-20
    • 2014-12-15
    • 2013-05-23
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多