Hey,
I am glad that you got interested by this topic. Sadly due other duties I will 
have no time to write about this solution before mid of March. It's part of 
training session I prepare. My goal was to show "grant signed by" and "grant 
principal" constructions known from standard Java 2 security mechanism. Signed 
by was much easier to achieve since BundleSignerCondition is built-it in 
framework. A real question is - shouldn't PrincipalCondition be shipped by 
framework to cover all Java 2 security features?

After training I should get more time to work on blog entry/wiki page. Before - 
all necessary code is in place on github project. Feel free to use it as you 
wish. Permission entries using Principal condition allows 
Subject.doAs/doAsPrivileged access to look up services etc.

Cheers,
Lukasz

Wiadomość napisana przez BJ Hargrave <hargr...@us.ibm.com> w dniu 18 lut 2013, 
o godz. 16:21:

> Yes. Put your example on wiki.osgi.org. 
> 
> --
> BJ Hargrave
> Senior Technical Staff Member, IBM
> OSGi Fellow and CTO of the OSGi Alliance
> hargr...@us.ibm.com   
> 
> office: +1 386 848 1781
> mobile: +1 386 848 3788
> 
> 
> 
> 
> 
> 
> From:        Karl Pauls <karlpa...@gmail.com> 
> To:        OSGi Developer Mail List <osgi-dev@mail.osgi.org>, 
> Date:        2013/02/17 16:43 
> Subject:        Re: [osgi-dev] ConditionalPermissionAdmin and Principal 
> permission 
> Sent by:        osgi-dev-boun...@mail.osgi.org 
> 
> 
> 
> Good. I didn't find the time to figure out what was going on but i was 
> assuming that it should work. Maybe you want to share a working example so 
> that others know how it can be done - I think the JAAS with CPM is not 
> trivial but interesting... 
> 
> regards, 
> 
> Karl 
> 
> 
> On Sun, Feb 17, 2013 at 2:24 PM, Łukasz Dywicki <luk...@dywicki.pl> wrote: 
> After backing to specification and reading part about CPM from begining I've 
> found lots of tips which helped me to fix scenario. One from most important 
> statements I wasn't aware of is that CPM may override local permissions but 
> can not grant more than bundle wants. After all it works like a harm. Thank 
> you for asistance! 
> 
> Kind regards, 
> Lukasz Dywicki 
> -- 
> Apache Karaf Commiter 
> http://dywicki.pl 
> 
> Wiadomość napisana przez Łukasz Dywicki <luk...@dywicki.pl> w dniu 15 lut 
> 2013, o godz. 18:16: 
> 
> I've tried with Felix 4.0.3 and security 2.0.1 - still the same. I deployed 
> additional maven profile called karaf-2.3.0 which allows to build and deploy 
> whole project with same framework version as you given. 
> 
> -- 
> LD 
> 
> Wiadomość napisana przez Karl Pauls <karlpa...@gmail.com> w dniu 15 lut 2013, 
> o godz. 17:58: 
> 
> 
> 
> 
> On Fri, Feb 15, 2013 at 5:47 PM, Łukasz Dywicki <luk...@dywicki.pl> wrote: 
> I use Felix 3.2.2 and Framework Security 1.4.2. 
> 
> That is very old - can you try with Felix 4.0.3 and security 2.0.1? 
> 
> regards, 
> 
> Karl 
>   
> Wiadomość napisana przez Karl Pauls <karlpa...@gmail.com> w dniu 15 lut 2013, 
> o godz. 17:45: 
> 
> 
> 
> 
> On Fri, Feb 15, 2013 at 4:59 PM, Łukasz Dywicki <luk...@dywicki.pl> wrote: 
> After few hours more spent on CPM I may confirm - I don't blow JVM and 
> framework. That's small success. :-) I've put results of my work to github 
> (https://github.com/splatch/osgi-cpm) my repiles inline. 
> 
> The most confusing part for me is why conditional permissions must be cleared 
> every time? 
> 
> What does "cleared every time" mean exactly and what does conditional 
> permissions imply? 
> In activator of CPM administration module where I perform update I clear 
> permission table. I belive it's not a preffered solution since it may remove 
> other administration modules entries. Now it works, however with more than 
> one administration module it will cause problems. Wouldn't be easier if CPM 
> service would return only table of permissions previously put by bundle? 
> 
>   
> Why I need to also push java.security.AllPermission at the end 
> 
> At what end and where to? 
> If I will not put ALLOW java.security.AllPermission at the end of CPM update 
> I will start getting errors with lack of access in different parts of 
> framework. Maybe my access restrictions were to broad? 
> 
> - even if I have this granted in startup policy and 
> OSGI-INF/permissions.perm? From my understanding CPM should not affect 
> permissions granted by PermissionAdmin. 
> 
> I'm not sure I understand what you are saying here. There is some interplay 
> between CPM and PA but why are you using PA in the first place (and what has 
> that to do with OSGI-INF/permissions.perm)?   
> Possibly it's my missunderstanding of CPM or wrong restrictions range. 
> ALLOW { 
>    [Condition] 
>    (java.io.FilePermission "file.txt" "read") 
> } 
> DENY { 
>   (java.io.FilePermission "file.txt" "read") 
> } 
> 
> Without ALLOW AllPermission simply crashes framework and other services which 
> tries to read disk. I learned that access rules must have exactly same 
> statements except condition statements. Also pushing condition without 
> BundleLocation/Signer condition is wrong idea. 
> 
>   
> My custom condition is executed, however I can not obtain subject. Also it's 
> not executed during execution of PrivilegedAction from security-test module. 
> 
> Hard to say without looking at what you are doing in more detail. Doing a 
> doPriv in the security-test might be the wrong thing to do. You need  a 
> doPriv in the condition, not necessarily in the test… 
> Now you may check code and observe what's going on. I even put multiple 
> statements into test module: 
> * execute action without authentication 
> * execute with Subject.doAs 
> * execute with Subject.doAsPrivileged 
> 
> In all cases my custom permission is not executed to verify access. 
> Subject.doAsPrivileged gets simply full access and ignores CPM rules. Maybe 
> it's guilty of AccessController, I don't know. In fact doAs[Privileged] have 
> Subject instance and uses SubjectDomainCombiner. Looks that these checks are 
> non-framework aware. 
> 
> Are you using equinox? If so, that will not work as you are using the 
> AccessController directly. Try using the SecurityManager instead to check 
> access. In felix it should work with both. 
> regards, 
> 
> Karl 
>   
> Cheers, 
> Lukasz Dywicki 
> -- 
> Apache Karaf Commiter 
> http://dywicki.pl 
> 
> 
> Hi Lukasz,
> 
> I must admit, I'm not sure I understand what you did so you might have to
> explain it again. However,
> 
> * OSGi-INF/permissions.perm has nothing to do with granting permissions. It
> is only there to allow a bundle to limit the permissions it gets.
> 
> * There is no standard policy file in OSGi (it only looks like that would
> be the case in the spec) - If you want something like that you have to
> write it yourself (or use the one I wrote for the security chapter in OSGi
> in Action:
> 
> http://code.google.com/p/osgi-in-action/source/browse/#svn%2Ftrunk%2Fchapter14%2Fcombined-example%2Forg.foo.policy
> 
> ).
> 
> * Assuming by "custom permission" you are talking about custom _condition_
> yes, it is somewhat tricky to trigger security checks inside a security
> check. However, it should be possible - are you sure the code base of your
> custom condition has enough permissions and you do whatever you do inside
> doPriv blocks? You can find an example of a custom condition here:
> 
> http://code.google.com/p/osgi-in-action/source/browse/trunk/chapter14/combined-example/org.foo.condition.ask/src/org/foo/condition/ask/AskUserCondition.java
> 
> ).
> 
> Finally, I admit that it is possible that the combination of custom
> condition that uses JAAS to determine the current subject isn't possible
> but that would be a bug in felix so we would need to take the discussion
> there maybe. Otherwise, this is what i would try:
> 
> Write a custom condition that does determine the current subject via JAAS
> from inside a doPriv block when it is asked whether it is satisfied and
> returns true if the subject equals the subject name given in the parameters
> of the condition.
> Create a policy file that has an ALLOW for this condition with the name of
> the subject and the permissions that you want to give to it.
> Put the condition on the classpath and start felix with the security
> provider and the policy bundle installed and see if it works.
> 
> 
> regards,
> 
> Karl 
> 
> 
> Dear all,
> I was looking for something similar to grant for given principal authorized 
> by JAAS login module in OSGi world. I thought that 
> ConditionalPermissionaAdmin (CPM) will be solution of my problems, however it 
> failed to cover the scenario.
> 
> I have very simple code to test security layer using standard Java mechanism. 
> My JAAS configuration: 
> Unix {
> com.sun.security.auth.module.UnixLoginModule required; 
> };
> 
> Policy configuration: 
> grant Principal com.sun.security.auth.UnixPrincipal "workshop" {
> permission java.io.FilePermission "file.txt", "read";
> };
> 
> This example allows to open "file.txt" when JVM is launch by user "workshop". 
> There are many examples, where this may be used and unix principal is used 
> just because it doesn't have any external dependencies. With this kind of 
> configuration I may grant access to given permissions using given principal 
> (GroupPrincipal "admin" to administer bundle states for example).
> 
> I launched my example under Felix 4.x with Felix Security 2.0.1. However, 
> what I have observed - seems that OSGI-INF/permissions.perm must have 
> following syntax:
> (permissionClass "resource", "action")
> 
> I had following OSGI-INF/permissions.perm file:
> ALLOW {
> [com.example.PrincipalPermission "admin"]
> (java.io.FIlePermission "file.txt", "read")
> } "read file by admin group"
> 
> I have login module which is capable to verify user credentials and perform 
> authentication. My code is executed with Subject.doAsPrivileged(subject, 
> action, null). I haven't tried that with Equinox yet.
> 
> Another thing is usage of AccessControllContext inside custom permissions - 
> it causes stack overflow (I use 
> Subject.getSubject(AccessController.getContext())). I don't know how to avoid 
> that since my custom permission must obtain Subject instance to obtain given 
> permissions but it doesn't have access to subject instance. I don't want hack 
> with ThreadLocals since it will break compability with JAAS layer used by 
> many libraries.
> 
> Did you ever got something like this running with CPM? If so, please share 
> tips with me.
> 
> Cheers,
> Lukasz
> --
> Apache Karaf Commiter
> http://dywicki.pl 
> 
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> 
> -- 
> Karl Pauls
> karlpa...@gmail.com
> http://twitter.com/karlpauls
> http://www.linkedin.com/in/karlpauls
> https://profiles.google.com/karlpauls 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> 
> -- 
> Karl Pauls
> karlpa...@gmail.com
> http://twitter.com/karlpauls
> http://www.linkedin.com/in/karlpauls
> https://profiles.google.com/karlpauls 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> 
> -- 
> Karl Pauls
> karlpa...@gmail.com
> http://twitter.com/karlpauls
> http://www.linkedin.com/in/karlpauls
> https://profiles.google.com/karlpauls 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> 
> 
> 
> -- 
> Karl Pauls
> karlpa...@gmail.com
> http://twitter.com/karlpauls
> http://www.linkedin.com/in/karlpauls
> https://profiles.google.com/karlpauls_______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to