0

我正在尝试在我的应用程序中使用条件权限,在 Karaf 中运行。代码摘自 OSGi in Action 一书(请参阅完整的策略示例),归结为:

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 安全层有问题吗?如何激活它?

4

1 回答 1

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 已经启用了此功能。在我的博客上查看更多信息

于 2013-10-21T11:15:19.270 回答