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