2

Plaid Link API 文档指出,成功的 Plaid 链接的结果会返回具有public_token以下属性的 a:

一旦用户通过 Plaid Link 成功登录,该模块将提供一个 public_token。这与典型的 Plaid API 请求形成对比,后者返回 access_token。

在应用程序或浏览器中公开是安全的

不能用于直接检索帐户和路由号码(用于身份验证)或交易(用于连接)

可以通过 /exchange_token 端点交换格子 access_token。

据推测,这与 形成对比access_token,这意味着access_token是一个秘密。但是,据我所知,每个接受 an 的Plaid 端点access_token还需要客户端的 ID 和secret值。

假设secret实际上是保密的,理论上公开访问令牌是否安全?如果没有,我错过了什么?如果是这样,公共令牌的意义何在?

4

1 回答 1

6

你的假设是正确的,access_token应该保密。

公开的唯一原因access_token是要么向用户显示该信息(没有理由这样做),要么向客户端提供信息,以便稍后将其发送回来(例如使用 OAuth 令牌进行身份验证)。

但是,如果您公开access_token,这意味着您的 API 期望用户在请求信息时发送他们自己的访问令牌。您的 API 信任该用户输入。如果用户获得对其他用户的访问权限access_token,他们可以将其发送到您的 API,并获得对其他用户帐户的访问权限。

为了防止这种未经授权的访问,您需要跟踪哪个用户可以访问哪些令牌,并且您必须在任何请求时验证它以确保没有未经授权的访问。

到那时,您需要问自己,为什么access_token首先要公开?客户 ID 是公开信息,因此您依赖于您secret不会被公开的事实。如果您的秘密曾经被公开并且access_tokens已经被视为公开,那么所有用户的所有银行信息都将被公开。

为确保您的用户数据尽可能安全,access_token切勿将其提供给最终用户。

于 2017-01-14T14:43:54.913 回答