从HttpServletRequest获取用户名和密码

时间:2012-07-30 08:27:00

标签: java java-ee servlets cxf

我需要从HttpServletRequest获取用户名和密码来处理基本身份验证。我所拥有的是CXF端点和基本的auth拦截器。 HttpServletRequest我是这样的:

public void handleMessage(Message message)            
        throws Fault {
    HttpServletRequest request = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST); 

}

当我尝试调试代码时,我看到了:

request.getAuthType() is null
request.getRemoteUser() is null

我发送的用户名和密码以及来自Soap UI的请求。所以问题是如何从请求中获取用户名和密码?

修改

标题看起来像这样:

POST http://localhost:8011/GradIrelandUserRegistration HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Authorization: Basic UGF1bGl1czpQYXVsaXVzMTIz
Content-Length: 3170
Host: localhost:8011
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

他们说授权是基本的,但是为什么调用request.getAuthType()会返回null?

2 个答案:

答案 0 :(得分:3)

我能够弄清楚自己。在Soap UI中,我需要将身份验证类型更改为:

Preemptive

然后使用:

AuthorizationPolicy policy = (AuthorizationPolicy) message.get(AuthorizationPolicy.class.getName());

现在从政策对象我可以获得用户名和密码。

答案 1 :(得分:0)

This may be helpful to you 。 我在SOAP数据解析方面有点新鲜,所以,如果不能正常工作,请告诉我简短的问题。 。 另请检查此 J-Query Plugin 以使用数据库解析SOAP服务。检查此 Stack Overflow