Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security REST服务中的客户端API安全_Security_Rest_Jersey_Client Side_Basic Authentication - Fatal编程技术网

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

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服务和客户端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的替代方案吗?