我需要从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?
答案 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