I didn't know about the WebServiceContext object when I did my initial 
implementation, so I haven't tried it. I had decided to use Spring security for 
the auth provider, so I just plugged that in at the password callback level. A 
cool side-effect of this approach is that you can use Spring security 
annotations to protect web service calls at the method level like this:

public User updateUser(String username, User info) throws AtlasFault {
    ... Guarded impl code ...
}
 
and within the body of a method, you can make a call to the standard Spring 
security threadlocal to get the user roles and filter data accordingly. The way 
I am doing it is probably not too portable though, so I guess it just depends 
on what you need.
@Secured( { AtlasRoles.ROLE_USER_MGMT_ADMIN })



________________________________
From: Tedman Leung <[email protected]>
To: [email protected]
Sent: Friday, February 20, 2009 2:37:22 PM
Subject: Re: Authentication and authorization

Just out of curiosity, if you're using a WSS4J interceptor, wouldn't it be 
easier to just call WebServiceContext.getUserPrincipal()? or is that some 
how unreliable?



On Fri, Feb 20, 2009 at 10:27:15AM -0800, derek.adams wrote:
> 
> Which authentication method are you using? If you are using WS-Security via
> the WSS4JInInterceptor, then you can set the authenticated user in your
> password callback class. Generally, the easiest method is to set a thread
> local variable (the method Spring security uses). If you are using HTTP
> basic authentication, I am pretty sure you would be able to get the username
> from the HTTP headers.
> 

-- 
                                                          Ted Leung
                                                          [email protected]

It's time for a new bike when the bulb in your shift light burns out.



      

Reply via email to