使用Apache Karaf的OSGi Security:找不到服务ConditionalPermissionAdmin

时间:2013-10-21 09:40:22

标签: java security osgi apache-karaf

我正在尝试在我的应用程序中使用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();

然而,没有ConditionalPermissionAdmin服务似乎由Karaf注册,因为我在查找时获得了null ServiceReference。

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

1 个答案:

答案 0 :(得分:1)

Karaf没有任何问题,因为你很可能正在使用Karaf,你很可能也在使用Felix Framework。对于Felix,您需要部署额外的org / apache / felix / org.apache.felix.security / 1.4.0 / org.apache.felix.framework.security-1.4.0.jar = 1。 (很可能还需要更新的版本;-)) Equinox已经启用了此功能。 请点击my blog

了解更多信息