首先,让我说我是关于REST服务和客户端API的菜鸟......
我正在使用NetBeans中的Jersey和Glassfish 3.1.2开发一些REST Web服务。这些REST服务已经存在,它们都是从MySQL数据库自动生成的。
我的下一步是安全! 我已经在我的REST服务上实现了基本身份验证,并且一切正常(当我进入REST服务主页时,Web上会出现一个登录/密码窗口)。登录名和密码位于我的数据库中。
现在,我想在客户端API 尝试使用REST服务时实现安全性。这样做的简单方法是什么?
谢谢!
答案 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点击它,则需要安全功能。