I created an issues: FELIX-4658. I hope the description and title are ok :)

Unfortunately I'm not allowed to assign it to you but I am very interested in 
your solution. 

Thanks so far,
Dirk


-----Ursprüngliche Nachricht-----
Von: Karl Pauls [mailto:karlpa...@gmail.com] 
Gesendet: Montag, 29. September 2014 14:00
An: users@felix.apache.org
Betreff: Re: Comprehension question about ProtectionDomain of a Bundle

On Mon, Sep 29, 2014 at 1:34 PM, Felix Meschberger <fmesc...@adobe.com>
wrote:
>
> Hi
>
> Am 29.09.2014 um 13:13 schrieb Karl Pauls <karlpa...@gmail.com>:
>
> > On Mon, Sep 29, 2014 at 12:56 PM, <dirk.rudo...@t-systems.com> wrote:
> >
> >> What happens with Bundle-Location: inputstream:bundle-1.0.0.jar. Is 
> >> a URLHandler available for this?
> >
> >
> > No.
> >
> >
> >> So in this case JCE implemtation of OpenJDK will not be supported 
> >> by Apache Felix (OSGI in general?) out of the box?
> >>
> >
> > If you choose to give a bundle location that doesn't work than yes, 
> > you have a problem there.
> >
> > I suppose we could re-work the FakeURLStreamhandler to actually 
> > serve up the content of the revision. So if the OpenJDK JCE 
> > implementation would
at
> > least do the right thing with the code source url it might work
>
> I have the impression, that this might work, indeed.


The only way it might work (again, this is hacking a hack so ymmv) is to 
override the JarUrl subsystem (and it will probably involve creating copies of 
stuff all over the place to make it work with the reference: protocol - which i 
wouldn't do initially).

I can do it (please open a jira issue and assign it to me if you want that) but 
keep in mind that it will be a very brittle solution to the problem as it 
depends on the using library to do the right thing in regards to URLs (which 
mostly will not happen) - but it should work for the OpenJdk impl.

regards,

Karl

>
>
> > but I
> > wouldn't be surprised if they don't (URLs and how to handle them are 
> > a
mess
> > in java).
>
> +100
>
> Regards
> Felix
>
> >
> > regards,
> >
> > Karl
> >
> >
> >> Regards,
> >> Dirk
> >>
> >> -----Ursprüngliche Nachricht-----
> >> Von: Karl Pauls [mailto:karlpa...@gmail.com]
> >> Gesendet: Montag, 29. September 2014 12:47
> >> An: users@felix.apache.org
> >> Betreff: Re: Comprehension question about ProtectionDomain of a 
> >> Bundle
> >>
> >> In the current Felix setup, though, this URL basically just is an
immutable
> >>> key referring to the abstract Bundle not to the concrete contents 
> >>> of the Bundle. If we expect the CodeSource URL to actually refer 
> >>> to the location from where classes are loaded, then the 
> >>> BundleProtectionDomain should probably take the Content from the 
> >>> BundleRevisionImpl to use as the basis for the CodeSource URL. In 
> >>> this case, though, it is not relevant any longer what the string 
> >>> for the
> >> bundle location actually is.
> >>>
> >>
> >> The BundleProtectionDomain does the correct thing.
> >>
> >> The problem is purely that some library assumes it can get the code
source
> >> of a protection domain and access it. That is wrong and a bad hack 
> >> at
best
> >> but nothing we can paper over.
> >> Setting the bundle location as the code source is the correct thing 
> >> to
do.
> >> If you want to work with that library (or others that do make the 
> >> same
bad
> >> assumption) you can use a URLHandlers to make it work with your own 
> >> namespace and you are good. This would only be a problem if you 
> >> would
reuse
> >> bundle locations for bundles that are not identically which you
shouldn't
> >> do in the first place.
> >>
> >> regards,
> >>
> >> Karl
> >>
> >>
> >> WDYT ?
> >>>
> >>> Regards
> >>> Felix
> >>>
> >>> Am 29.09.2014 um 11:27 schrieb <dirk.rudo...@t-systems.com> <
> >>> dirk.rudo...@t-systems.com>:
> >>>
> >>>> Thanks so far for your explanations.
> >>>>
> >>>> So Am I right that each provider that installs bundles in Felix 
> >>>> using a
> >>> custom bundle location (as Sling OSGI installer does) has to 
> >>> provide a URL handler that is able to resolve to the proper jar file?
> >>>>
> >>>> Think about the following cases:
> >>>>
> >>>> - Install a bundle using OSGI installer, the Bundle-Location will 
> >>>> be
> >>> jcrinstall:/apps/path/install/bundle-1.0.0.jar for example
> >>>> - Update the bundle with the same symbolic name but another 
> >>>> version
> >>> using the webconsole, the Bundle-Location will be the same
> >>>>
> >>>> or
> >>>>
> >>>> - Install a bundle using OSGI installer, the Bundle-Location will 
> >>>> be
> >>> jcrinstall:/apps/path/install/bundle-1.0.0.jar for example
> >>>> - Update the bundle with the same symbolic name by removing
> >>> /apps/path/install/bundle-1.0.0.jar  and uploading the new version 
> >>> to /apps/path/install/bundle-1.1.0.jar, the Bundle-Location will 
> >>> also be the same
> >>>>
> >>>> Due to this the I think the location of the CodeSource should 
> >>>> always
> >>> point to the cache jar (the one the actual class is loaded from, 
> >>> think about embedded dependency). Otherwise it would be hard to 
> >>> implement a proper URLStreamHandlerService.
> >>>>
> >>>> For the JarURLConnection: Is the cached file transient?
> >>>>
> >>>> Cheers,
> >>>> Dirk
> >>>>
> >>>> -----Ursprüngliche Nachricht-----
> >>>> Von: Karl Pauls [mailto:karlpa...@gmail.com]
> >>>> Gesendet: Montag, 29. September 2014 10:23
> >>>> An: users@felix.apache.org
> >>>> Betreff: Re: Comprehension question about ProtectionDomain of a 
> >>>> Bundle
> >>>>
> >>>> Hi Dirk,
> >>>>
> >>>> we are using bouncycastle as jce provider in our application 
> >>>> setup based
> >>> on
> >>>>> AEM (Apache Sling) and I got an error during jar verification.
> >>>>> (Something with MalformedURLException).
> >>>>>
> >>>>
> >>>> Yeah, irrc they do assume that the code source of a protection 
> >>>> domain is
> >>> a valid url which isn't necessarily the case for OSGi bundles (I'd 
> >>> argue they shouldn't but oh well).
> >>>>
> >>>>
> >>>>> For my use case I fixed the issue by implementing a 
> >>>>> URLStreamHandlerService providing a URLConnection to the bundle 
> >>>>> location but during my work on this I thought about the topic 
> >>>>> more in
> >>> general.
> >>>>>
> >>>>
> >>>> I guess that it is probably ok to handle the situation like this
> >>> assuming you can provide the handler.
> >>>>
> >>>>
> >>>>> As the comment in BundleProtectionDomain.java:38 says the 
> >>>>> CodeSource of a BundleProtectionDomain should be based on the 
> >>>>> revision of the bundle not the bundle itself. (for me the bundle 
> >>>>> location is
> >>>>> "jcrinstall:/a/path/to/the/bundle.jar")
> >>>>>
> >>>>
> >>>> You should be able to ignore this comment. The 
> >>>> BundleProtectionDomain
> >>> does indeed provide the bundle revision. It just does get the 
> >>> revision in a stupid way - hence, the comment to remind me that I 
> >>> should figure out a better (i.e., less indirect) way to provide the 
> >>> revision to it.
> >>>>
> >>>>
> >>>>> Is there any reason why the bundle location is used here and not 
> >>>>> the file:///<file:///\\> URL of the revision located in the 
> >>>>> cache
> >> instead?
> >>>>>
> >>>>
> >>>> Well, the idea is that you base your security policies on the 
> >>>> code
> >>> source url. That concept would be pretty much meaningless if the 
> >>> code source would be the cached jar. Regardless, the cache 
> >>> implementation (and its layout) is mostly undefined by the spec - 
> >>> the code source is the Bundle-Location URL (consider, for example, 
> >>> the JarURLConnection of the
> >>> ire: it will cache the jar file on disc as a JarFile but the url 
> >>> will still be the one of the source for the code source).
> >>>>
> >>>>
> >>>>> I mentioned that unfortunatly the JceSecurity implementation has 
> >>>>> a WeakHashMap<Class,URL> that holds the URL to the location of 
> >>>>> the CodeSource. So I assume that it might be possible that the 
> >>>>> worng CodeSource location can be returned there when the cache 
> >>>>> points to a old revision location after a bundle update without 
> >>>>> garbage collection of the old revision. Am I right?
> >>>>>
> >>>>
> >>>> No. The Class object is unique based on its class loader so you 
> >>>> will get
> >>> the code source URL that was associated with the bundle revision 
> >>> that this class has been loaded from. As long as they key the map 
> >>> by an actual Class object and get the URL from the code source of 
> >>> the BundleProtectionDomain of that class object you should be good.
> >>>>
> >>>>
> >>>> regards,
> >>>>
> >>>> Karl
> >>>>
> >>>>
> >>>>> Kind Regards,
> >>>>>
> >>>>> Dirk Rudolph
> >>>>>
> >>>>>
> >>>>> T-Systems Multimedia Solutions GmbH Organisationseinheit CCS 
> >>>>> Dirk Rudolph Software-Entwicklung, OCJP
> >>>>> Hausanschrift: Riesaer Straße 5, 01129 Dresden
> >>>>> Postanschrift: Postfach 10 02 24, 01072 Dresden
> >>>>> +49 351 2820-5363       (Tel)
> >>>>> E-Mail:
> >>>>> dirk.rudo...@t-systems.com<mailto:mdirk.rudo...@t-systems-mms.co
> >>>>> m>
> >>>>> Internet:
> >>>>> http://www.t-systems-mms.com<http://www.t-systems-mms.de/>
> >>>>>
> >>>>> T-Systems Multimedia Solutions GmbH
> >>>>> Aufsichtsrat: Thilo Kusch (Vorsitzender)
> >>>>> Geschäftsführung: Peter Klingenburg, Susanne Heger, Dr. Rolf 
> >>>>> Werner
> >>>>> Handelsregister: Amtsgericht Dresden HRB 11433 Sitz der
Gesellschaft:
> >>>>> Dresden
> >>>>> Ust-IdNr.: DE 811 807 949
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>> Karl Pauls
> >>>> karlpa...@gmail.com
> >>>> http://twitter.com/karlpauls
> >>>> http://www.linkedin.com/in/karlpauls
> >>>> https://profiles.google.com/karlpauls
> >>>>
> >>> B KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
> >>> CB    [  X  ܚX K  K[XZ[   \ \  ][  X  ܚX P  [ ^  \ X  K ܙ B  ܈ Y  ]
[ۘ[
> >>  [X[
> >>>   K[XZ[   \ \  Z [    [ ^  \ X  K ܙ B
> >>>
> >>>
> >>
> >>
> >> --
> >> Karl Pauls
> >> karlpa...@gmail.com
> >> http://twitter.com/karlpauls
> >> http://www.linkedin.com/in/karlpauls
> >> https://profiles.google.com/karlpauls
> >>
> >> -------------------------------------------------------------------
> >> -- To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >> For additional commands, e-mail: users-h...@felix.apache.org
> >>
> >
> >
> >
> > --
> > Karl Pauls
> > karlpa...@gmail.com
> > http://twitter.com/karlpauls
> > http://www.linkedin.com/in/karlpauls
> > https://profiles.google.com/karlpauls
>



--
Karl Pauls
karlpa...@gmail.com
http://twitter.com/karlpauls
http://www.linkedin.com/in/karlpauls
https://profiles.google.com/karlpauls

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to