Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Java 保护RESTAPI的最佳方法是什么?_Java_Rest_Security_Servlets_Jersey - Fatal编程技术网

Java 保护RESTAPI的最佳方法是什么?

Java 保护RESTAPI的最佳方法是什么?,java,rest,security,servlets,jersey,Java,Rest,Security,Servlets,Jersey,我正在使用Jersey用Java开发restapi,保护它的最佳方法是什么?我从基于密码的身份验证、Servlet上下文、以及令牌化等方面进行了研究。但是,什么是行业标准的方法来保护它,确保没有人可以通过在浏览器中键入URL从get请求中获取数据,只需从POST调用PostMan等等?有关于实施这一最佳方式的学习材料吗 简单地说,我想问的是,如何通过确保RESTAPI仅可访问我们的应用程序来保护我的RESTAPI?。这样做的方法可以是任何东西,从密码到令牌。我现在正在学习它,试图实现它,但在我需

我正在使用
Jersey
用Java开发restapi,保护它的最佳方法是什么?我从基于密码的身份验证、
Servlet上下文
、以及令牌化等方面进行了研究。但是,什么是行业标准的方法来保护它,确保没有人可以通过在浏览器中键入URL从
get
请求中获取数据,只需从
POST
调用
PostMan
等等?有关于实施这一最佳方式的学习材料吗


简单地说,我想问的是,如何通过确保RESTAPI仅可访问我们的应用程序来保护我的RESTAPI?。这样做的方法可以是任何东西,从密码到令牌。我现在正在学习它,试图实现它,但在我需要知道学习什么之前,因为我正在寻找最佳实践和行业标准的方法来实现它。

这里是一个很好的开始保护您的API的地方:

  • 使用HTTPS
  • 使用用户名/密码进行身份验证
  • 当用户成功登录时,您将为他们生成一个令牌
  • 将令牌分配给该用户(简单的方法是将其保存在DB中)
  • 要求用户在每次请求时发送该令牌
  • 在响应任何请求之前验证令牌
  • 尽管如此,还是有一些担忧。您应该研究如何实现这些目标:

    • 以加密形式将凭据存储在数据库中,以防数据库受损

    • 如果您将令牌存储在DB中,验证需要DB查找,这会是一个问题吗?您是否希望负载过大

    • 如果使用无状态身份验证,例如JWT,那么如果需要,如何撤销访问权。(提示:查看access+刷新令牌方案+黑名单)

    • 如何传输令牌、标头和cookie

    • 保护您的API不受跨站点脚本(又称XSS)和跨站点请求伪造(又称CSRF或XSRF)的影响


    注意:这些只是我脑海中的一些快速想法,你可以在网上找到很多关于这些的信息

    很不清楚你的问题是什么。使用哪种形式的令牌(JWT、UUID等)?使用哪种形式的令牌传递:header、cookie或param?如何在Jersey中实现身份验证/授权?还是什么?@user3707125:我在问如何通过确保REST API只能访问我们的应用程序来保护我的REST API。做这件事的方法可以是你提到的任何东西。我现在正在学习它,试图实现它,但在我需要知道学习什么之前,“API只适用于我们的应用程序”-这是不可能的,因为客户端可以监视与服务器的通信,并模仿它。在web中,您通常在设计后端时会理解前端是另一个应用程序,在考虑安全性时,请记住该应用程序将不是您的。我知道,我只是说清楚我在寻找什么。这并不意味着只有我们才能访问它,这意味着我们可以访问它,因为我们有这样做的使命。如何授权和保护REST API?身份验证客户端获得令牌后,可以通过令牌确定角色。对于连续请求,用户将令牌作为头传递。在Jersey我有一个过滤器(?(不记得这个词了),它会根据用户的角色和请求的路径拒绝/传递请求。谢谢。我在谷歌上搜索,它说oAuth2是最好的?也许它做了我们所说的一切?OAuth2不是很友好,但是是的,如果你能实现它,它是很好的。您可以研究一些开箱即用的解决方案,如Auth0或Stormpath。您的解释非常清楚。我有几个问题。1.“使用用户名/密码进行身份验证”是指允许用户使用其凭据登录应用程序?就像FB用户通过rypomg用户名和密码登录Facebook一样?是的,使用用户名和密码登录用户是最直接的身份验证方式,所以这是普通用户使用他在应用程序注册时使用的凭据登录应用程序,我认为是某种硬密码。我还有更多的问题。