Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 REST安全密钥_Java_Json_Rest_Security_Secret Key - Fatal编程技术网

Java REST安全密钥

Java REST安全密钥,java,json,rest,security,secret-key,Java,Json,Rest,Security,Secret Key,我正在编写一个JavaRESTWebService,我试图理解它是如何工作的,但我已经设法创建了一些简单的方法,在这些方法中,我的客户机将发送一个包含信息的JSON,服务器将使用它做些事情。很简单 所以我要做的是:我的客户希望创建一个新对象,例如,一个帐户,但我不希望世界上的每个人都简单地向我的网站发送json并创建一个对象。 然而,我不想在IP上进行过滤,因为我不知道谁或什么将使用我的客户端应用程序 那么,我做了些什么来阻止每个人简单地发送数据呢?我为玩家创建了一个密钥,他们使用它的方式如下:

我正在编写一个JavaRESTWebService,我试图理解它是如何工作的,但我已经设法创建了一些简单的方法,在这些方法中,我的客户机将发送一个包含信息的JSON,服务器将使用它做些事情。很简单

所以我要做的是:我的客户希望创建一个新对象,例如,一个帐户,但我不希望世界上的每个人都简单地向我的网站发送json并创建一个对象。 然而,我不想在IP上进行过滤,因为我不知道谁或什么将使用我的客户端应用程序

那么,我做了些什么来阻止每个人简单地发送数据呢?我为玩家创建了一个密钥,他们使用它的方式如下: 随请求发送json

这是可行的,因为现在只有使用secretkey的人才能创建,只有我给他们一个密钥,他们才能得到一个密钥。我很确定他们不会把这个秘密钥匙给别人,因为如果他们这样做,他们只会搞砸自己,他们的服务会得到大量的假数据。。。 但我希望它更安全,这样就没有人可以获得密钥,无论发生什么,我不知道HTTPS是否也会隐藏域+参数,我认为不是,对吗


所以我的问题是:在没有人知道密钥是什么的情况下,如何发送密钥?

使用HTTPS发送POST请求,您可以在正文中指定密钥数据。您应该指定内容类型为x-www-form-urlencoded。内容应该进行编码,截获url的对手将无法破译正文


但是,对于使用URL路径中的密钥发送每个请求,您的实现是非常不安全的,因为任何拦截REST调用的对手只需查看URL即可知道密钥。实现起来更难、更久,但如果您可以使用基本的Auth或OAuth授权服务,它将只授权特定用户使用有效的令牌访问该服务,这是保护REST服务的一般方法。

不要拙劣地重新发明轮子。查找如何执行OAUTH2我不想重复任何东西:P我这样做是因为我不知道其他任何方法,但是谢谢,我将研究OAUTH2!事实上,OAuth、Basic和Digest等标准是最简单和安全的方法。接下来是每个WS/REST框架CXF、Spring、Axis。。如果有实现身份验证/授权选项的方法,请尝试使用已实现的选项