0

我有一个私有 API,我希望第 3 方客户端授权而不向客户端发送敏感信息,例如密码。在这种情况下,通常的流程是:

  • 我们给客户一个秘密的一次性令牌
  • 激活此令牌后(例如,使用此令牌调用 api),他可以通过提供密码来创建帐户。
  • 客户端使用此密码进行授权并收到一个秘密令牌
  • 这个秘密令牌用于每个 api 调用。

这个流程的问题是当我们向他发送一次令牌时。如果有人先使用它,他就会收到他想要的所有数据。

atm非对称加密无处不在,https(ssl)就是基于它。我想知道是否存在不对称身份验证之类的东西。正如我所看到的,这个流程是:

  • 客户端和服务器生成 2 个魔法令牌client_private_token, client_secret_token, server_public_token, server_secret_token
  • 我们将对手的公共令牌保存在例如双方的设置文件中。
  • 服务器响应server_public_token
  • 客户端用于client_private_token生成一些session_token并与需要授权的每个请求一起发送
  • 服务器使用它的server_private_tokenanduser_public_token来验证它session_token是否有效。

该流程与 ssl 非常相似,但我们不是加密数据,而是生成证明是我们的魔术字符串。

请不要将它与 JWT 混淆,因为 JWT 只是一个带有一些信息和服务器签名的有效负载。要创建 JWT 用户需要首先获得授权。

此外,如果有这样的事情,最好有现代语言的客户,如java,等jspython

4

0 回答 0