On Apr 23, 2008, at 11:16 PM, maho77 wrote:




djencks wrote:


Well, I kind of hope you can't get the server side Subject into your
client :-).  Could I suggest that doing so might not be appropriate
from a security standpoint?  You don't really know what other
sensitive info might have been added to the Subject.  Also, I think
you would be tying your client to a particular login module which
might not be an appropriate coupling.

What I would suggest considering is to have a server component (ejb?)
that maps the principals in the Subject to a set of (String) roles
that are sent back to the client, and that you base the UI stuff on
these roles.  It's pretty silly that there isn't a getUserRoles()
call in the ee specs but that is what we have to live with now.
Anyway I think this would prevent accidentally sending sensitive info
to the client, and provide some decoupling between the specific login
module you happen to be using now and your client.

There might be something I've overlooked here, so feel free to try to
change my mind :-)

thanks
david jencks




Hello,

I currently use a login module that calls a stateless bean with the user credentials. The bean itself takes the user that accesses the bean a return all his groups to the client. The client turns the groups into principals
and so on

This works, but I don't like this way.

On a client there is a need to hide UI elements from the user in some ways,
The user wants to login one time to the client.
Than I have to hide some UI elements e.g. for the whole admin module, if the user has no access rights for it. And further I only need this information for hiding UI elements. The logic happens on the geronimo server and the ejb components are secured with roles. That means if I want to access to the logic, the server security handles the access, not the client. The client
only has to know the user credentials and the realm.


Are you wishing for something like the server-side jacc system on your client? I've wanted that too, but at the moment I tend to think that storing roles as principals is not the best plan. I lean toward having only an identification principal in the Subject and keeping track of roles separately. AFAIK this doesn't fit very well into any current java specs, but is pretty much what RBAC models deal with.

I know it's a philosophical problem. So see this reply just as a statement, from my point of view. I have no web client that's the problem I have ;-)
At the risk of being too repetitive...
I think that sending the server-side subject back to a client is apt to be more than a philosophical problem. In general, you don't know what information other than the principals you are interested in may be in the subject. For instance in geronimo if you want to access a remote secured web service you put the credentials for the web service in the Subject. These may be credentials for the server to access the web service, not for the user of the server. Leaking these to the user/client program could be a serious security violation. In order to do this, you would need verification that the client program is authorized to get the credentials: presumably this would involve signing the code and communicating this somehow to the server.

Instead of this likely-to-be-risky exposure, if you just make the user roles available to the client, you are unlikely to be sending particularly sensitive information. Could I ask what kind of security system you are using on the client that requires principals?

many thanks
david jencks



Have a nice day

Mark
--
View this message in context: 
http://www.nabble.com/JAAS-with-a-standalone-client-tp16824275s134p16844548.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Reply via email to