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