I assigned it to me. I'll try to get back to it soon. regards,
Karl On Mon, Sep 29, 2014 at 2:23 PM, <dirk.rudo...@t-systems.com> wrote: > 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 > -- Karl Pauls karlpa...@gmail.com http://twitter.com/karlpauls http://www.linkedin.com/in/karlpauls https://profiles.google.com/karlpauls