如果可以公开访问,则 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 访问它,则它需要安全功能。