In jgdms I've enabled support for https unicast lookup in LookupLocator this 
establishes a connection to a Registrar only, not any service.  This 
functionality doesn't exist in River.

How do you propose establishing a connection using one of these endpoints?

Regards,

Peter.

Sent from my Samsung device.
 
  Include original message
---- Original message ----
From: "Michał Kłeczek (XPro Sp. z o. o.)" <michal.klec...@xpro.biz>
Sent: 14/02/2017 12:00:02 am
To: dev@river.apache.org
Subject: Re: OSGi NP Complete Was: OSGi - deserialization remote invocation 
strategy

KerberosEnpoint? 
HttpsEndpoint? 

Thanks, 
Michal 

Peter wrote: 
> How do you establish the secure jeri connection? 
> 
> Regards, 
> 
> Peter. 
> 
> Sent from my Samsung device. 
>    
>    Include original message 
> ---- Original message ---- 
> From: "Michał Kłeczek (XPro Sp. z o. o.)"<michal.klec...@xpro.biz> 
> Sent: 13/02/2017 11:34:45 pm 
> To: dev@river.apache.org 
> Subject: Re: OSGi NP Complete Was: OSGi - deserialization remote invocation 
>strategy 
> 
> 1. The connection can be done using normal (secure) Jeri. 
> We do not have to verify the installer object since its classes were loaded 
>locally and (by definition) are trusted. 
> 
> 2 The attacker cannot instantiate any non-local class. That is the whole 
>point. 
> Since the "installer" classes must be local, then we can trust the installer 
>to 
> honor any invocation constraints we place on it. So any code downloads 
> are secure - in the sense that the client can require 
>authentication/integrity/confidentiality etc. 
> 
> Note that (if necessary) we can apply the same logic recursively - we can 
>provide an "installer of an installer" 
> and still be sure any code download is going to honor the security 
>constraints we require. 
> 
> Thanks, 
> Michal 
> 
> Peter wrote: 
> So this object that you have with a locally installed class is tasked with 
>authenticating the remote service, provisioning and resolving a bundle, 
>deserializing the smart proxy and registering it with the OSGi service 
>registrar in a readResolve or readObject method? 
> 
> How do you propose the connection from the client to the service established 
>in order to enable this to occur? 
> 
> How do you prevent an attacker from choosing a different class to 
>deserialize? 
> 
> Regards, 
> 
> Peter. 
> 
> Sent from my Samsung device 
>    
>    Include original message 
> ---- Original message ---- 
> From: Michał Kłeczek<michal@kleczekorg> 
> Sent: 13/02/2017 10:07:28 pm 
> To: dev@river.apache.org 
> Subject: Re: OSGi NP Complete Was: OSGi - deserialization remote invocation 
>strategy 
> 
> Comments inline. 
> 
> Peter wrote: 
>   Mic, 
> 
>   I'm attempting to get my head around your proposal: 
> 
>   In the case of JERI, the InvocationHandler is part of the smart  
>   proxy's serialized state.  A number of smart proxy classes will need  
>   to be unmarshalled before the UnmarshallingInvocationHandler is  
>   deserialized. 
> 
>   The smart proxy contains a reference to a dynamic proxy (which sun  
>   called the bootstrap proxy) and the dynamic proxy contains a reference  
>   to your UnmarshallingInvocationHandler.    This means the smart proxy  
>   must be unmarshalled first. 
> 
>   How do you get access to UnmarshallingInvocationHandler without  
>   unmarshalling the smart proxy first? 
> 
> No no - I am saying about wrapping the smart proxy inside another  
> object. It can be either a dynamic proxy, or simply an object that  
> implements "readResolve" returning the unmarshalled smart proxy. 
> 
>   More comments inline below. 
> 
>   On 13/02/2017 6:11 PM, Michał Kłeczek wrote: 
>   We are talking about the same thing. 
> 
>   We are turning circles, Peter - all of this has been already discussed. 
> 
>   1. Yes - you need to resolve bundles in advance (in OSGi it is not  
>   possible to do otherwise anyway) 
>   Agree. 
>   2. You cannot decide upon the bundle chosen by the container to load  
>   the proxy class (the container does the resolution) 
>   Disagree, nothing in the client depends on the proxy bundle, there's  
>   no reason to provision a different version. 
>   3 The runtime graph of object places additional constraints on the  
>   bundle resolution process (to what is specified in bundles' manifests). 
>   Since you do not have any way to pass these additional constraints to  
>   the container - the case is lost. 
>   Disagree.  The proxy bundle contains a manifest with requirements.   
>   The stream has no knowledge of versioning, nor does it need to, there  
>   are no additional constraints.  If the service proxy dependencies  
>   cannot be resolved, or it doesn't unmarshall, then it will not be  
>   registered with the OSGi registry in the client, client code will not  
>   discover it and the client will have no knowledge of it's existance  
>   except for some logging. 
> 
> This is totally backwards. 
> That way no client is able to find any service because there is a  
> chicken and egg problem - we do not know the proxy interfaces until the  
> proxy's bundle is resolved. 
> 
> Understand that when you place a bundle identifier in the stream - it is  
> equivalent to specifying a Require-Bundle constraint - nothing more  
> nothing less. 
> 
>   Additionally - to explain what I've said before about wrong level of  
>   abstraction: 
> 
>   Your general idea is very similar to mine: have a special object  
>   (let's call it installer) that will install software prior to proxy  
>   unmarshalling. 
> 
>   1. For some reason unclear to me you want to constrain the way how  
>   this "installer object" is passed only via the route of  
>   ServiceRegistrar (as attributes) 
>   Disagree, I'm not proposing the service have any control over  
>   installation at the client, other than the manifest in the proxy  
>   bundle, nor am I proposing using service attributes, or the use of any  
>   existing ServiceRegistar methods (see SafeServiceRegistrar link posted  
>   earlier). 
> If you think about it from the higher architectural view - there is no  
> difference. It does not really matter what steps are made - important  
> thing is that: 
> a) you have a special object used to download code - this object is  
> supposed to be of a class installed locally in advance 
> b) the above object is used to create a ClassLoader that you will use it  
> load the actual deserialized object's class 
> 
> It does not matter where the first object is taken from - be it  
> "SafeServiceRegistrar", the stream itself, a JavaSpace or the Moon. 
> 
> Thanks, 
> Michal 
> 
> 
> 
> 
> 


Reply via email to