Java Web Service - 用户安全的Web方法

时间:2011-08-16 02:35:05

标签: java web-services

Java Web服务,是否可以向不同的用户公开不同的方法?

例如,我的Web服务中有10个方法,但我想允许用户A只访问1或2个方法,如何做到这一点?

2 个答案:

答案 0 :(得分:1)

我猜你无法完全隐藏用户的方法。您唯一能做的就是只向特定用户提供所需信息。在我的一个应用程序中,我使用了Decorate Design Pattern实现了它。我会试着解释一下。

您可以在某些非Web服务类中分离此逻辑。创建2个Web服务(每个userAccess Model一个)。从每个Web服务调用分离的逻辑。

假设您创建了包含方法1~10的类CommonA。创建Web服务说ForUserA只包含方法1和2,它调用CommonA的方法1和2。等等。

如果有人建议更好的方法,那将是一件非常愉快的事。

答案 1 :(得分:1)

为了让您的网络服务确定哪个用户当前正在调用您的网络服务方法,您需要某种身份验证。

既然SAOP& REST使用HTTP协议,您可以使用会话。 一旦您的客户自己进行了身份验证,您就可以允许/拒绝他访问您喜欢的任何网络方法。

以下是SOAP服务的简单示例。

@Resource WebServiceContext wsContext;

MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
String username = (String)session.getAttribute("username");
if(username.equals("userA") {
    // Do your thing
} else {
    throw new WebServiceException("Not allowed to access this method."); 
}