If you use the servlet container's authentication and transport security
methods (through WEB-INF/web.xml) to force authentication (such as HTTP
BASIC Auth over HTTPS), you can simply put the following line in your
service implementation class.


/**
   * The web-service context will be automatically injected by the
JAX-WS Container.
   */
  @Resource
  private WebServiceContext context;


  //in your methods where you need to check the caller:
   if (context.getUserPrincipal() != null)
    {
      log.info(getUserPrincipal().getName() + ":: just called our
methods");
    }

Regards,
Josef



-----Original Message-----
From: Eamonn Dwyer [mailto:[email protected]] 
Sent: 19 August 2009 12:57
To: [email protected]
Subject: RE: Determining Caller's Identity


Hi Stephen 
Not quite what you want but maybe you could do something like this
inside an interceptor rather than inside your service.

TLSSessionInfo tlsSessionInfo = message.put(TLSSessionInfo.class);
Certificate[] peerCerts =  tlsSessionInfo.getPeerCertificates();
... check the peer certificates and authorize based on this

Regards
Eamonn

> From: [email protected]
> To: [email protected]
> Subject: Determining Caller's Identity
> Date: Tue, 18 Aug 2009 14:37:12 -0400
> 
> I have written and Apache CXF Web Service (WSDL First), inside the  
> service I want to enforce authorization based on the identity of the  
> client that called the service.  I wanted to know if there was an API

> call I can make from the service implementation to obtain the client  
> identity.   For example if the client authenticate over HTTPS with a  
> client certificate.
> 
> --Steve
> 
> Stephen Langella
> Co-Founder
> Inventrio, LLC
> www.inventrio.com
> 
> [email protected]
> 
> 
> 
> 
> 
> 

_________________________________________________________________
See all the ways you can stay connected to friends and family
http://www.microsoft.com/windows/windowslive/default.aspx

Reply via email to