最简单的方法是在WSDL中添加SOAP标头以进行身份验证。例如,用户名和密码可以作为新元素添加到WSDL文件中的新SOAP标头下,并重新生成源文件。
@WebService
public class Service{
//Injected by whatever container you are using
@Resource
WebServiceContext wctx;
@WebMethod
public Integer fooServiceLocator(int x, int y){
//Get The Message Context
MessageContext mctx = wctx.getMessageContext();
//Grab the HTTP Request Headers
Map object = (Map) mctx.get(MessageContext.HTTP_REQUEST_HEADERS);
//Grab the Authorization Values
List basicCredentials = (List) object.get("Authorization");
//Print out credentials
basicCredentials.forEach(System.out::println);
//Do a meaningful check of the credentials
在WSDL中使用上面的头文件,如果我们生成源文件,我们可以轻松地在impl中添加身份验证逻辑。
然后可以在* Impl.java类中验证用户名和密码。