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.com>
> >>>>> 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

Reply via email to