I use Felix 3.2.2 and Framework Security 1.4.2.

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

Reply via email to