Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 什么是API密钥和API机密,以及如何在Jersey 2中实现它?_Java_Api_Rest_Security - Fatal编程技术网

Java 什么是API密钥和API机密,以及如何在Jersey 2中实现它?

Java 什么是API密钥和API机密,以及如何在Jersey 2中实现它?,java,api,rest,security,Java,Api,Rest,Security,我正在尝试保护我的Jersey 2 SAAS Rest应用程序。在其他SAAS服务中,我经常看到术语“API密钥”和“API机密” 在我看来,API密钥是用户ID的抽象,API秘密是随机生成的哈希值。使用APIKey:APISecret,用户有权使用某些端点。因此,背后的概念是通过https进行“基本身份验证” 另外:拥有一个未过期的API机密是否安全?(TTL) 如果我是对的-我如何在Jersey 2/Jax RS中实现它?API密钥和API机密通常指OAuth身份验证。您可以从SAAS服务仪

我正在尝试保护我的Jersey 2 SAAS Rest应用程序。在其他SAAS服务中,我经常看到术语“API密钥”和“API机密”

在我看来,API密钥是用户ID的抽象,API秘密是随机生成的哈希值。使用APIKey:APISecret,用户有权使用某些端点。因此,背后的概念是通过https进行“基本身份验证”

另外:拥有一个未过期的API机密是否安全?(TTL)


如果我是对的-我如何在Jersey 2/Jax RS中实现它?

API密钥和API机密通常指OAuth身份验证。您可以从SAAS服务仪表板中撤销api密钥和密码。因此,如果你的钥匙被泄露,它们将不再工作。这就是SAAS如何识别您的应用程序以及如何向您收费。好的。也许这应该是另一个问题的一部分,但是在开始时直接使用Oauth/Oauth2真的有意义吗?我发现的教程有点复杂,我认为这可能在一开始就被压倒了。您还有其他建议吗?OAuth是一个标准的多客户端和服务器库,以不同的语言存在。这意味着第三方更容易编写使用您的服务的应用程序。但是如果你不想要OAuth,我认为泽西岛有一个基本的auth,谢谢。还有另一种方法(在我看来)。通过https(用户名、密码)对用户进行身份验证。生成bcrypt令牌->将其保存到db->将其交给用户,并使用此令牌对每个请求进行授权。我看到这种方法的唯一问题是这些令牌的TTL->因为通常这些令牌的TTL大约为1h。但问题是,当其他开发人员使用我的api时,他们肯定不想每小时刷新一次令牌以再次访问。那么在这种情况下有没有办法处理TTL呢?