Re: RE: [Mx4j-user] RE: mx4j-Bugs-969175: Security and delegation

Eamonn McManus <[email protected]>
Newsgroups gmane.comp.java.mx4j.devel
Organization Sun Microsystems
Message-ID <[email protected]>
Ron,

Thanks for these interesting comments.  My replies inline.

Ron Vered wrote:
> Other comments, which are not at all critical to us, but are worth some
> consideration are the following:
> 
> We know that when a client connects to an Mserver, a subject is
> eventually created and associated with the running thread, so if some
> Mbean is invoked, the subject's permissions are considered.
> The RMI implementation and spec provide means for the client to specify
> who he is by supplying credentials, but provide no means for the client
> to identify the server.
> 
> However, if this client registers for some notification and later
> notified, on the client there is no information what so ever about which
> entity initiated the notification and thus the client side code
> associated with the listener is executed (probably) with the connector's
> permission. In practice, the "server" may possibly be running with
> several different associated subjects. In current implementation, the
> client does not know of any (not even one) and thus is likely running
> with the wrong set of permissions when a notification is received.

Indeed, there is a fundamental asymmetry in the current design, in that 
the server does not trust the client, but the client does trust the 
server.  This is mostly due to the fact that the client can do 
relatively powerful things to the server (invoke methods on MBeans), 
while all the server can do is send objects (method return values and 
notifications) to the client.

When a client adds a listener for handling a notification, it does so 
for a particular MBean in a particular MBean Server.  So it should know 
what the server is.  The listener does not need special logic to 
determine what server is sending the notification, because it can 
already know that.

On the other hand, it is true that the client could want to determine at 
connect time whether the server is who it says it is.  It is possible, 
though tricky, to configure RMI to use SSL and certificates for this.

For the most part, when we were designing the JMX Remote API, we felt 
that we should not be designing a complete security model for RMI -- it 
makes more sense for that to do be done for RMI in general rather than 
the particular use that the JMX Remote API makes of it.  It is in fact 
possible to do quite a lot with the fairly limited security support that 
is present.  In particular, you can do challenge/response authentication 
by having your JMXAuthenticator.authenticate method throw a special 
exception that the client recognizes as a challenge, and having the 
client redo the authentication with the response to the challenge. 
Admittedly this is not very straightforward.

For a more complete security solution, the JMX Remote API defines an 
optional part that includes another protocol called JMXMP.  This 
protocol interacts with TLS (basically SSL) and SASL (the Simple 
Authentication and Security Layer) to provide a much more configurable 
security solution that can interact with various security 
infrastructures.  MX4J does not currently include an implementation of 
JMXMP, but the Reference Implementation does.

This does not mean that we could not envisage augmenting the security 
support of the RMI connector in the future, but it is unlikely to have 
the same degree of security configurability as the JMXMP connector.

Regards,
-- 
Éamonn McManus, JSR 160 (JMX Remote API) Spec Lead

> Last, I think it should be made easier to plug-in different
> authentication models.
> Currently, while I like the Kerberos based idea, I think its not really
> an option and is more difficult to deploy (leave it in though!).
> 
> If we look at RMI, than we get JMXAuthenticator, which allows for
> client-only authentication with a single unidirectional message (not
> good enough).
> Of course I can write my own connector server, but if the spec will
> either allow more options (e.g. real challenge-response) AND allow to
> plugin your own thereby allowing client AND server authentication,
> possibly arbitrary number of messages for authentication stage, that
> would be great.
> 
> I leave it up to you to raise possible solutions.
> 
> Thank you,
> Ron.


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idP47&alloc_id808&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.