You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Hasan <ha...@trialox.org> on 2008/12/16 11:37:20 UTC
Assigning and checking self-defined Permission
Hi all,
I have problems in using Permission derived from java.security.Permission
with the felix ConditionalPermissionAdmin.
I have 3 bundles:
- PermissionManagement: defines MyPermission class and assigns this
permission to all bundles
- Provider: exposes a function f with security check on MyPermission
- Consumer: try to use function f
I run these bundles in felix + framework.security + scr and got access
denied
(Consumer is not allowed to use function f although MyPermission is
already assigned to all bundles)
Questions: How should I assign and check self-defined Permissions?
Any help is appreciated.
More infos to affected code snippets below.
Kind regards and thanks in advance
Hasan
Problems in detail:
I have a bundle named PermissionManagement which defines a new
Permission class
as follows:
public class MyPermission extends Permission {
private String actions;
public MyPermission(String name, String actions) {
super(name);
this.actions = actions;
System.out.println("MyPermission constructor called with params:
" +
name + ", " + actions);
}
...
@Override
public String getActions() {
System.out.println("MyPermission getActions method called");
return this.actions;
}
}
PermissionManagement also defines a class called "PermissionManager" to
assign
MyPermission to all bundles using ConditionalPermissionAdmin as follows:
cpa.addConditionalPermissionInfo(new ConditionInfo[]{
null
},
new PermissionInfo[]{
new PermissionInfo(
MyPermission.class.getName(), "MyName", "MyAction")
});
Provider bundle defines a class DummyProvider which exposes a function F
guarded with security check
public String f() {
MyPermission myPerm = new MyPermission("MyName", "MyAction");
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkPermission(myPerm);
}
return "test";
}
Consumer bundle has an Activator as follows:
public class Activator implements BundleActivator {
@Override
public void start(BundleContext arg0) throws Exception {
DummyProvider dp = new DummyProvider();
System.out.println(dp.f());
}
...
}
in felix shell
-> start file:///.../consumer-1.0-SNAPSHOT.jar
DummyProvider constructor called
MyPermission constructor called with params: MyName, MyAction
MyPermission hashCode method called
MyPermission hashCode method called
MyPermission hashCode method called
MyPermission hashCode method called
MyPermission getActions method called
java.security.AccessControlException: access denied
(testbundles.permissionmanagement.MyPermission MyName MyAction)
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org
Re: Assigning and checking self-defined Permission
Posted by Hasan <ha...@trialox.org>.
Dear Karl,
Karl Pauls wrote:
> Does your provider bundle export the package in which MyPermission is defined?
>
The provider bundle does not export the permissionmanagement package.
Why is that needed? Thanks!
KR
Hasan
This is the MANIFEST.MF of the provider bundle
Manifest-Version: 1.0
Export-Package: testbundles.provider;uses:="testbundles.permissionmana
gement"
Bundle-Version: 1.0.0.SNAPSHOT
Build-Jdk: 1.6.0_07
Built-By: hasan
Tool: Bnd-0.0.255
Bnd-LastModified: 1229385746578
Bundle-Name: Test Bundle - Provider
Bundle-ManifestVersion: 2
Created-By: Apache Maven Bundle Plugin
Import-Package: testbundles.provider,testbundles.permissionmanagement
Bundle-SymbolicName: testbundles.provider
This is the MANIFEST.MF of the permissionmanagement bundle
Manifest-Version: 1.0
Export-Package:
testbundles.permissionmanagement;uses:="org.osgi.service.
permissionadmin,org.osgi.service.condpermadmin,org.osgi.framework,org
.osgi.service.component"
Service-Component: OSGI-INF/serviceComponents.xml
Built-By: hasan
Tool: Bnd-0.0.255
Bundle-Name: Test Bundle - Permission Management
Created-By: Apache Maven Bundle Plugin
Bundle-Version: 0.1.0.SNAPSHOT
Build-Jdk: 1.6.0_07
Bnd-LastModified: 1229384791707
Bundle-ManifestVersion: 2
Import-Package: org.osgi.framework;version="1.3",org.osgi.service.comp
onent;version="1.0",org.osgi.service.condpermadmin;version="1.0",org.
osgi.service.permissionadmin;version="1.2",testbundles.permissionmana
gement
Bundle-SymbolicName: testbundles.permissionmanagement
> regards,
>
> Karl
>
> On Tue, Dec 16, 2008 at 11:37 AM, Hasan <ha...@trialox.org> wrote:
>
>> Hi all,
>>
>> I have problems in using Permission derived from java.security.Permission
>> with the felix ConditionalPermissionAdmin.
>>
>> I have 3 bundles:
>> - PermissionManagement: defines MyPermission class and assigns this
>> permission to all bundles
>> - Provider: exposes a function f with security check on MyPermission
>> - Consumer: try to use function f
>>
>> I run these bundles in felix + framework.security + scr and got access
>> denied
>> (Consumer is not allowed to use function f although MyPermission is already
>> assigned to all bundles)
>>
>> Questions: How should I assign and check self-defined Permissions?
>> Any help is appreciated.
>> More infos to affected code snippets below.
>>
>> Kind regards and thanks in advance
>> Hasan
>>
>> Problems in detail:
>>
>> I have a bundle named PermissionManagement which defines a new Permission
>> class
>> as follows:
>>
>> public class MyPermission extends Permission {
>> private String actions;
>>
>> public MyPermission(String name, String actions) {
>> super(name);
>> this.actions = actions;
>> System.out.println("MyPermission constructor called with params: " +
>> name + ", " + actions);
>> }
>> ...
>>
>> @Override
>> public String getActions() {
>> System.out.println("MyPermission getActions method called");
>> return this.actions;
>> }
>>
>> }
>>
>> PermissionManagement also defines a class called "PermissionManager" to
>> assign
>> MyPermission to all bundles using ConditionalPermissionAdmin as follows:
>>
>> cpa.addConditionalPermissionInfo(new ConditionInfo[]{
>> null
>> },
>> new PermissionInfo[]{
>> new PermissionInfo(
>> MyPermission.class.getName(), "MyName", "MyAction")
>> });
>>
>> Provider bundle defines a class DummyProvider which exposes a function F
>> guarded with security check
>>
>> public String f() {
>> MyPermission myPerm = new MyPermission("MyName", "MyAction");
>> SecurityManager security = System.getSecurityManager();
>> if (security != null) {
>> security.checkPermission(myPerm);
>> }
>> return "test";
>> }
>>
>> Consumer bundle has an Activator as follows:
>> public class Activator implements BundleActivator {
>>
>> @Override
>> public void start(BundleContext arg0) throws Exception {
>> DummyProvider dp = new DummyProvider();
>> System.out.println(dp.f());
>> }
>> ...
>> }
>>
>> in felix shell
>> -> start file:///.../consumer-1.0-SNAPSHOT.jar
>> DummyProvider constructor called
>> MyPermission constructor called with params: MyName, MyAction
>> MyPermission hashCode method called
>> MyPermission hashCode method called
>> MyPermission hashCode method called
>> MyPermission hashCode method called
>> MyPermission getActions method called
>>
>> java.security.AccessControlException: access denied
>> (testbundles.permissionmanagement.MyPermission MyName MyAction)
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>
>>
>
>
>
>
--
Hasan Hasan
trialox AG
Binzmühlestrasse 14, CH-8050 Zürich
Tel: +41 44 635 7577
Fax: +41 44 635 7574
URL: http://trialox.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org
Re: Assigning and checking self-defined Permission
Posted by Karl Pauls <ka...@gmail.com>.
Does your provider bundle export the package in which MyPermission is defined?
regards,
Karl
On Tue, Dec 16, 2008 at 11:37 AM, Hasan <ha...@trialox.org> wrote:
> Hi all,
>
> I have problems in using Permission derived from java.security.Permission
> with the felix ConditionalPermissionAdmin.
>
> I have 3 bundles:
> - PermissionManagement: defines MyPermission class and assigns this
> permission to all bundles
> - Provider: exposes a function f with security check on MyPermission
> - Consumer: try to use function f
>
> I run these bundles in felix + framework.security + scr and got access
> denied
> (Consumer is not allowed to use function f although MyPermission is already
> assigned to all bundles)
>
> Questions: How should I assign and check self-defined Permissions?
> Any help is appreciated.
> More infos to affected code snippets below.
>
> Kind regards and thanks in advance
> Hasan
>
> Problems in detail:
>
> I have a bundle named PermissionManagement which defines a new Permission
> class
> as follows:
>
> public class MyPermission extends Permission {
> private String actions;
>
> public MyPermission(String name, String actions) {
> super(name);
> this.actions = actions;
> System.out.println("MyPermission constructor called with params: " +
> name + ", " + actions);
> }
> ...
>
> @Override
> public String getActions() {
> System.out.println("MyPermission getActions method called");
> return this.actions;
> }
>
> }
>
> PermissionManagement also defines a class called "PermissionManager" to
> assign
> MyPermission to all bundles using ConditionalPermissionAdmin as follows:
>
> cpa.addConditionalPermissionInfo(new ConditionInfo[]{
> null
> },
> new PermissionInfo[]{
> new PermissionInfo(
> MyPermission.class.getName(), "MyName", "MyAction")
> });
>
> Provider bundle defines a class DummyProvider which exposes a function F
> guarded with security check
>
> public String f() {
> MyPermission myPerm = new MyPermission("MyName", "MyAction");
> SecurityManager security = System.getSecurityManager();
> if (security != null) {
> security.checkPermission(myPerm);
> }
> return "test";
> }
>
> Consumer bundle has an Activator as follows:
> public class Activator implements BundleActivator {
>
> @Override
> public void start(BundleContext arg0) throws Exception {
> DummyProvider dp = new DummyProvider();
> System.out.println(dp.f());
> }
> ...
> }
>
> in felix shell
> -> start file:///.../consumer-1.0-SNAPSHOT.jar
> DummyProvider constructor called
> MyPermission constructor called with params: MyName, MyAction
> MyPermission hashCode method called
> MyPermission hashCode method called
> MyPermission hashCode method called
> MyPermission hashCode method called
> MyPermission getActions method called
>
> java.security.AccessControlException: access denied
> (testbundles.permissionmanagement.MyPermission MyName MyAction)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>
--
Karl Pauls
karlpauls@gmail.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org