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

"Ron Vered" <[email protected]>
Newsgroups gmane.comp.java.mx4j.devel
Message-ID <8FEAA1F16948B54D81DEC98AFAC9F39B07042D01@SDCEXMB01.corp.siebel.com>
Eamonn,

You are right about the RMI argument.
Please consider the fact that a "JMX client" may very well be a server too.
We would be happy to see real implementation of SASL JMXMP in Reference Implementation and MX4J.

Regards,
Ron.

-----Original Message-----
From: Eamonn McManus [mailto:[email protected]] 
Sent: Monday, September 06, 2004 5:29 AM
To: Ron Vered
Cc: MX4J-Dev (E-mail); Bordet, Simone; Luis Miguel Alventosa
Subject: Re: [Mx4j-devel] RE: [Mx4j-user] RE: mx4j-Bugs-969175: Security and delegation


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 e-mail message is for the sole use of the intended recipient(s) and contains confidential and/or privileged information belonging to Siebel Systems, Inc. or its customers or partners.  Any unauthorized review, use, copying, disclosure or distribution of this message is strictly prohibited.  If you are not an intended recipient of this message, please contact the sender by reply e-mail and destroy all soft and hard copies of the message and any attachments.  Thank you for your cooperation.
====================================================



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