Or perhaps use remote services to export only the services you want to export 
into another felix runtime?

> On 5 Nov 2018, at 10:29, Christoph Nölle <christoph.noe...@iee.fraunhofer.de> 
> wrote:
> 
> Hi Casper,
> 
> I guess the standard solution for restricting the imports of certain bundles 
> would be to enable OSGi-Security. In this case a bundle needs a special 
> permission to import packages from another bundle, and you can use the 
> ConditionalPermissionAdmin service to configure the permissions. For 
> instance, if you deploy the system bundles to the ./system folder and custom 
> extensions to ./custom, then you could use the following permissions to a) 
> run your system bundles without any restrictions (they have all permissions) 
> b) restrict your customers' bundles to import the "my.api" package:
> 
> allow { [org.osgi.service.condpermadmin.BundleLocationCondition 
> "file:./system/*"] (java.security.AllPermission)} "system-bundles"
> allow { [org.osgi.service.condpermadmin.BundleLocationCondition 
> "file:./custom/*"] (org.osgi.framework.PackagePermission "my.api" "import")} 
> "api-import"
> 
> Alternatively, you could explicitly deny only certain imports to the custom 
> bundles:
> 
> deny { [org.osgi.service.condpermadmin.BundleLocationCondition 
> "file:./custom/*"] (java.security.AllPermission) 
> (org.osgi.framework.PackagePermission "my.internal.api" "import") 
> (org.osgi.framework.PackagePermission "something.else" "import")} 
> "critical-imports"
> allow { [org.osgi.service.condpermadmin.BundleLocationCondition 
> "file:./custom/*"] (java.security.AllPermission)} "all-the-rest"
> 
> Instead of bundle location, you can also use signer information to grant/deny 
> permissions.
> 
> Unfortunately, there are few useful resources on the topic of OSGi security 
> available, but the spec might be helpful:
> https://osgi.org/specification/osgi.core/7.0.0/service.condpermadmin.html 
> <https://osgi.org/specification/osgi.core/7.0.0/service.condpermadmin.html>
> https://osgi.org/specification/osgi.core/7.0.0/framework.security.html 
> <https://osgi.org/specification/osgi.core/7.0.0/framework.security.html>
> 
> To run OSGi with security enabled you need to add a file "all.policy" with 
> content "grant { permission java.security.AllPermission; };" and specify the 
> properties "-Dorg.osgi.framework.security=osgi 
> -Djava.security.policy=<PATH/TO/all.policy>".
> With Felix you also need to add the bundle 
> org.apache.felix/org.apache.felix.framework.security to your run 
> configuration (a framework extension bundle), the latest version is 2.6.1 
> (works at least for Felix framework >= 5.6.10).
> 
> Best,
> Christoph
> 
> >>> Casper van der Tuin <casper.vandert...@planonsoftware.com> 05.11.2018 
> >>> 09:17 >>>
> Hi Felix users,
> 
> Our solution consists of a set of bundles running in an Felix container
> (Host). We want to open up our part of API for other teams to extends the
> solution with additional bundles. As these should not be able to import all
> the exports from the other bundles and platform, the idea was to have have a
> bundle startup another felix container (Extension) and only export the
> packages of our open API for bundles running within this container. However
> when protoyping this we ran into the issue that the bundles running within
> the Extension container will use the class loader from the Host container
> instead of the class loader from the Extension container. Which could make
> sense as the Felix classes are contained on the Host.
> 
> We also tried to include the felix jars inside the Extension bundle (to have
> the complete felix in the Extension bundle class loader). Unfortunately this
> blokced starting up the bundle, as the Activater instantiated in to startup
> the Extension bundle is now not created in the same classloader as the where
> it is used in the Host container, resulting in a class cast exception.
> 
> Does any one have an idea on how to solve this issue, i.e. so that bundles
> runnning in the Extension container will load classes from the class loader
> of the Extension container bundle? Or have any other solution to restrict
> the imports of some of the bundles running in the Felix container?
> 
> Greetings,
> Casper
> 
> 
> 
> --
> Sent from: 
> http://apache-felix.18485.x6.nabble.com/Apache-Felix-Users-f4833200.html 
> <http://apache-felix.18485.x6.nabble.com/Apache-Felix-Users-f4833200.html>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org


----
Bruce Jackson
CTO
bruce.jack...@thingstream.io




Reply via email to