Security REST服务中的客户端API安全
首先,让我说我是REST服务和客户端API方面的noob 我正在NetBeans中使用Jersey和glassfish3.1.2开发一些restweb服务。这些REST服务已经存在,它们都是从MySQL数据库自动生成的 我的下一步是安全! 我已经在我的REST服务上实现了基本身份验证,并且一切正常(当我进入REST服务主页时,web上会出现一个带有登录名/密码的窗口)。登录名和密码在我的数据库中 现在,我想在客户端API尝试使用REST服务时实现安全性。做这件事最简单和最好的方法是什么Security REST服务中的客户端API安全,security,rest,jersey,client-side,basic-authentication,Security,Rest,Jersey,Client Side,Basic Authentication,首先,让我说我是REST服务和客户端API方面的noob 我正在NetBeans中使用Jersey和glassfish3.1.2开发一些restweb服务。这些REST服务已经存在,它们都是从MySQL数据库自动生成的 我的下一步是安全! 我已经在我的REST服务上实现了基本身份验证,并且一切正常(当我进入REST服务主页时,web上会出现一个带有登录名/密码的窗口)。登录名和密码在我的数据库中 现在,我想在客户端API尝试使用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点击它,它需要安全功能。(1)你使用什么类型的客户端?其他服务器?大客户?AJAX(2) 您是否为每个最终用户提供了不同的凭据?每个客户一个?一对钥匙?@Aurélien要点是开发一个java应用程序来使用这些服务。每个用户的凭据都在我的数据库中的登录表中。在数据库中注册的所有客户端都可以使用REST服务。我正在阅读有关HTTPBasicAuthFilter的文章,您认为这是一个解决方案吗?您应该知道,即使使用vanilla
java.net.HttpURLConnection
,java也会向用户显示一个默认登录窗口(403状态)。您的jar必须签名。@Aurélien这是jersey.api.client.filter.HTTPBasicAuthFilter的替代方案吗?