首先,让我说我是一个关于REST服务和客户端API的新手.
我正在使用NetBeans中的泽西岛和Glassfish 3.1.2开发一些REST web服务。这些REST服务已经存在,它们都是由MySQL DataBase自动生成的。
我的下一步是保安!我已经在我的REST服务上实现了Basic-Authentication,并且都在工作(当我进入REST服务主页时,一个带有登录/密码的窗口出现在web上)。登录和密码在我的DataBase中。
现在,当客户端API尝试使用REST服务时,我希望实现安全性。做这件事最简单和最好的方法是什么?
谢谢!
发布于 2013-03-11 13:31:48
如果REST服务是可公开访问的,则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点击它,它就需要安全特性。
https://stackoverflow.com/questions/15338570
复制相似问题