REST服务中的客户端API安全性

时间:2013-03-11 12:28:12

标签: security rest jersey client-side basic-authentication

首先,让我说我是关于REST服务和客户端API的菜鸟......

我正在使用NetBeans中的Jersey和Glassfish 3.1.2开发一些REST Web服务。这些REST服务已经存在,它们都是从MySQL数据库自动生成的。

我的下一步是安全! 我已经在我的REST服务上实现了基本身份验证,并且一切正常(当我进入REST服务主页时,Web上会出现一个登录/密码窗口)。登录名和密码位于我的数据库中。

现在,我想在客户端API 尝试使用REST服务时实现安全性。这样做的简单方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果可以公开访问,则REST服务的入口点必须是安全性的实现位置。您不能依赖用户假设通过登录屏幕来访问服务的事实。

这意味着服务的入口点需要执行足够的验证才能知道请求是合法的。这可以通过将客户端的凭证直接发送到服务而不管请求来实现。

例如,在我看过的一些REST服务中,它可能看起来像这样:

@POST
@Consumes("application/xml")
@Produces("application/xml")
public String theService(@FormParam("someData") String someData, @FormParam("clientProfile") String clientProfile) {
    //parse XML into ClientProfile
    //attempt to authenticate ClientProfile
    //if authentication is unsuccessful, return error message
    //else, perform service's function
}

当然,不要直接使用此模型,并通过网络以纯文本XML形式发送用户名和密码等内容。如果您想这样做,您至少需要加密数据。无论如何,该示例的目的是表明,无论服务首次被点击,您需要在哪里确定,您应该继续处理。

经验法则:如果您可以使用URL点击它,则需要安全功能。