如何从Android应用程序调用的CXF JAX-RS Web服务方法中的HTTP Request获取主体名称

时间:2010-02-13 06:02:00

标签: android web-services cxf

如何获取主体名称,会话并理想地检查主体是否通过接收来自Android客户端的呼叫的CXF JAX-RS Web服务方法中的Spring Security上下文进行身份验证?这是我目前正在使用的代码。我已经评论了我想要获得的地方和内容。

调用webservice的Android代码:

httpclient.getCredentialsProvider().setCredentials(
          new AuthScope("192.168.1.101", 80), 
          new UsernamePasswordCredentials("joesmith", "mypasswd"));

 HttpGet httpget = new HttpGet(WEBSERVICE_URL+"/makePayload");
  httpget.setHeader("User-Agent", userAgent);
  httpget.setHeader("Content-Type", "application/xml");

  HttpResponse response;

  try {
      response = httpclient.execute(httpget);
      HttpEntity entity = response.getEntity();

      ... parse xml from response


      }

CXF,Spring网络服务代码:

@GET
@Path("/getPayload")
@Produces("application/XML")
public Response makePayload(@Context Request request){

         //Get user principal name
         //Get session?
         //Get Spring security context?

         Payload payload = new Payload();
         payload.setUsersOnline(new Long(200));

         return Response.ok().entity(payload).build();

 }

1 个答案:

答案 0 :(得分:0)

request.getUserPrincipal.getName()或静态SecurityContextHolder.getContext().getAuthentication().getName()可能有效