如何在 webapp xml 配置文件中保护 sun-jaxws java web 服务
How to secure a sun-jaxws java web service inside the webapp xml config files
我有一个 sun-jaxws xml 网络服务:
package com.myWebservices.ws;
import java.*;
import javax.*;
@WebService
public class GetSomeInfo{
//allow IP to consume web service
private static final String IP = "192.168.0.1";
@Resource
WebServiceContext wsContext;
@WebMethod(operationName="getSomeInfo")
public String getSomeInfo(String data) {
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);
//control access by IP inside the web service code
if (!(req.getRemoteAddr().equals(IP)))
result = "ACCESS DENIED";
else
String result = bean.executeSomeProcess(data);
return result
}
}
如您所见,Web 服务受 IP 访问保护。但是web服务有public的访问权限,即使你不获取信息只有"ACCESS DENIED",你也可以消费它。
我想知道是否可以在自己的 webapp xml 文件配置中配置 web 服务 (WEB-INF/sun-jaxws.xml, web.xml, META-IN/context.xml, 或任何..) 相同的保护 IP 访问,
它会自动拒绝任何非同一授权 IP 的 Web 服务访问,甚至没有人可以使用该 Web 服务。
编辑:添加信息:
如果我可以为 JAX-RS 过滤器配置 web.xml 文件并获得 IP 保护访问权限,我真正需要知道的是什么。
谢谢。
我有一个 sun-jaxws xml 网络服务:
package com.myWebservices.ws;
import java.*;
import javax.*;
@WebService
public class GetSomeInfo{
//allow IP to consume web service
private static final String IP = "192.168.0.1";
@Resource
WebServiceContext wsContext;
@WebMethod(operationName="getSomeInfo")
public String getSomeInfo(String data) {
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);
//control access by IP inside the web service code
if (!(req.getRemoteAddr().equals(IP)))
result = "ACCESS DENIED";
else
String result = bean.executeSomeProcess(data);
return result
}
}
如您所见,Web 服务受 IP 访问保护。但是web服务有public的访问权限,即使你不获取信息只有"ACCESS DENIED",你也可以消费它。
我想知道是否可以在自己的 webapp xml 文件配置中配置 web 服务 (WEB-INF/sun-jaxws.xml, web.xml, META-IN/context.xml, 或任何..) 相同的保护 IP 访问, 它会自动拒绝任何非同一授权 IP 的 Web 服务访问,甚至没有人可以使用该 Web 服务。
编辑:添加信息:
如果我可以为 JAX-RS 过滤器配置 web.xml 文件并获得 IP 保护访问权限,我真正需要知道的是什么。
谢谢。