On Jul 5, 2007, at 12:03 PM, David Blevins wrote:
On Jul 4, 2007, at 10:40 AM, David Jencks wrote:
We've run into a bit of a problem with javaee app clients and
logins. We need the same security configuration to support both
remote access to openejb and web services security. Remote access
to openejb currently requires a "remote login" that ends up with
an identity token on the client that is sent to openejb in each
request, and that openejb uses to look up the previously logged in
Subject. The web services security involves the client login
configuration putting a private credential containing the username/
password to use for the web services call into the Subject. I
can't figure out how to combine a "server side" login module that
produces the identity token with a client side login module that
produces the private credential. If I can't figure out how to do
this I have some doubts many of our users will be able to figure
it out either. I things there's general agreement that the remote
login mechanism is a bad idea and should be removed in favor of
some kind of security assertion idea. I really don't like how the
remote login occurs over a completely different channel than the
openejb remote calls themselves.
Took me a couple times through reading this and I get the proposed
changes, though I did not follow the above part where you explain
the issue. I guess I'd like to understand the parameters of the
problem better before moving on to resolution details.
Not so much a concern more curious, was this an issue during G
certification that just didn't have an affect on certification or
has something changed since then and this is a new issue?
How were we doing web services security before? Did it work for
EJBs too? (maybe that was the issue).
Web services security works and worked fine. AFAICT it's using BASIC
web authentication. Anyway we tell the web services client a user
and password and it gets sent with the message and logged in and
everything works. The user/pw comes out of a private credential in
the Subject. In order for this to get into the Subject we need a
login module running locally on the client to put it there. All this
is working fine and has worked fine for a long time.
The problem is that in order to call an ejb we (currently) need
remote login modules on the client that are actually running on the
server and get the identification principal back to the client
subject. We seem to be able to configure logins that use either only
remote modules or only local modules but I haven't been able to
figure out how to configure something that uses both a local login
module for the web services AND in the same login configuration a
remote module for openejb. I also find the code and configuration
around remote login modules to be incredibly hard to understand and
confusing so I'd rather come up with something that appears to
involve a little less magic.
I'm not entirely sure why the tests in question were passing before
my "All subjects come from logging in" change, but I suspect we had a
default subject configured that was allowing the web services access.
I really lost you when you stated an issue with web services
security then jumped to solving the problem in the protocol that
doesn't use web services. I can't figure out how these things
connect.
Just possibly the above will help :-)
Anyway after perusing the jaspi spec some more I don't want to
promise to implement it by geronimo 2.0 so I'm now trying option (0)
and hope to have a proposed patch friday. I'd like to modify the use
of the openejb AuthenticationRequest to include a security realm
name. Then we can use the openejb authentication request protocol to
request an identification token from the server and put it in the
client subject so calls to openejb can use it. I think this special
purpose solution will be a lot simpler and easier to understand than
the geronimo code and will work fine while we think about jaspi.
thanks
david jencks
Any help in understanding would be greatly appreciated.
-David