Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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键_Java_Javascript_Spring_Node.js_Api Key - Fatal编程技术网

Java 为我的API实现API键

Java 为我的API实现API键,java,javascript,spring,node.js,api-key,Java,Javascript,Spring,Node.js,Api Key,我已经创建了一个api,我想控制谁使用它,多久使用一次等等。我想有一个api密钥策略,以便用户必须提供密钥才能使用api。但是我不知道如何实现它。用户使用用户名和密码注册。我想到的是在用户登录时分配UUID,并将其存储在数据库的表中。然后每个请求都包含这个uuid,并在服务器上对每个请求进行检查 然而,这似乎并不正确。有人能解释一下创建api密钥的步骤吗,比如dropbox、twitter、facebook等等?我想自己尝试实现这一点 有人能解释一下创建api的步骤吗 像按键、dropbox、t

我已经创建了一个api,我想控制谁使用它,多久使用一次等等。我想有一个api密钥策略,以便用户必须提供密钥才能使用api。但是我不知道如何实现它。用户使用用户名和密码注册。我想到的是在用户登录时分配UUID,并将其存储在数据库的表中。然后每个请求都包含这个uuid,并在服务器上对每个请求进行检查

然而,这似乎并不正确。有人能解释一下创建api密钥的步骤吗,比如dropbox、twitter、facebook等等?我想自己尝试实现这一点

有人能解释一下创建api的步骤吗 像按键、dropbox、twitter、facebook等有什么功能? 我想自己尝试实现这一点

生成API密钥
  • 选择一些您想要使用的加密/解密方法
  • 选择加密前要添加到数据中的盐
  • 确定加密字符串中需要的数据:时间戳、Uid、角色等。时间戳是其中最有用的部分,因为使用时间戳可以限制来自某个时间之前的密钥的请求,因此需要生成新密钥
  • 将其捆绑在解密后可以解析的内容中。有些人使用json对象,有些人使用字符分隔的字符串
  • 注意:如果您不希望它是一个可解密的密钥,如中所示,它是散列的,因此更难破解,那么您可以简单地遵循以下策略:制定一组步骤来形成未加密的数据字符串:
    sha1(“某个秘密”。“某个其他信息位”。“etc”。“etc”)
    然后API使用者有责任生成自己的密钥。因此,只有当他们拥有构建它所需的必要部件/信息时,他们才能访问

    使用API 以Stripe的API为例:

  • 发出授权请求:返回API密钥。“curl使用-u标志传递基本身份验证凭据(在API密钥后添加冒号将防止它向您询问密码)。”--Stripe Docs

  • 将该密钥与所有其他请求一起发送


  • 您想要OAuth实现吗?或者你只是想生成一个随机密钥?我假设您想要一个公共/私有配对?有哪些常用的加密/解密方法可供使用?我想你不能用单向散列函数来处理这个问题?是否有必要将日期、角色等编码在密钥中?我不能创建一个密钥并添加一个salt,然后将其散列并将其提供给用户吗。在每次请求时,我都会用钥匙找到我需要的东西?事实上,不,并不总是需要的。我个人认为这是必要的。但是,如果您只在其中存储静态数据(永远不会更改的数据),那么您可以使用哈希而不是加密,这是单向的,几乎不可破解。参见编辑