I'm trying to wrap my head around the best way to do this in a jax-rs 
application, using CXF...

What I'm trying to do is implement an authentication scheme, but in a way 
that'll let me drop in something else when the powers that be determine what 
the something else should be.  My thinking is that if I isolate everything in a 
request handler, and let resource class methods depend on an injected 
credentials object, then the only thing that needs to change to support a new 
authentication scheme is the request handler itself.

I've looked at the src for CXF 2.2.10, to try to find examples of what I'm 
trying to do.  That hasn't gotten me very far, so my questions:

A. Is this a reasonable, generally-accepted approach?  If not, what do folks 
recommend?

B. How does one generally determine whether a request needs to be 
authenticated?  It comes down to what the user is trying to do, obviously, but 
the spot where the user's intentions are known (i.e. in the resource class 
method, where the work is being done) is much farther down the chain than the 
request handler that needs to know whether to issue a challenge.  Two ideas 
come to mind:

        1. If there's a way to tell what resource class method is going to be 
invoked for the current request, before it's actually invoked, then annotations 
on those class methods could give the request handler a hint as to whether to 
require authentication.

        2. Less elegantly, one could look at the HTTP method and URI and try to 
figure it out from there...  For example, maybe every POST is authenticated, 
and so on.  Again, less elegant.

C. Is a "security context" the right thing to populate, so that resource class 
methods can inject and make use of the information inserted by the request 
handler?  For my purposes, all I really need to know is who the authenticated 
user is.  Regardless, generally speaking, how does one inject a value in a 
request handler, so as to make use of it in a resource class method (in the 
same way that Context and PathParam and the like are injected)?

Reply via email to